解决Python字典查找报Keyerror的问题


Posted in Python onMay 26, 2021

Python的字典一般都直接查找key ,比如

dict={'a':1,'b':2,'c':3}
print(dict['a'])

但是如果在查找的key不存在的时候就会报:KeyError:

比如你要查看print(dict['d'])

由于这个时候dict里面并没有这个key ,所以就会直接报错,那么这个时候其实python给我们提供了一种很棒的解决方法,那就是用

setdefault,用法如下: dict.setdefault(key,[这里设置如果不存在想将值设置为啥,默认为None])

解决Python字典查找报Keyerror的问题

那么这里我们可以用此方法解决:

print(dict.setdefault('d',0))

然后就没有问题啦,注意下就是setdefault是如果要想往dict中添加新值的时候就使用此函数,如果只是单纯想要做查找,碰到key不存在或者希望在通过这个键读取值的时候能得到一个默认值,那么建议用defaultdict

首先先介绍下这个所谓的defaultdict,来自于collections模块,collections是个集合模块,defaultdict(function_factory)构建的是一个类似dictionary的对象,其中key的值,自行确定赋值,但是value的类型是function_factory的类实例,而且具有默认值.这里还引入了一个概念就是工厂函数,python的工厂函数就是指那些内建函数都是类对象,当你调用他们时,实际上是创建了一个类实例。

比如int(),str(),set()等,这里我们看下例子:

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(list)
for k, v in s:
    d[k].append(v)
print(d['yellow'])
print(d['white'])
print(list(d.items()))

我们最后得到的输出结果如下:

解决Python字典查找报Keyerror的问题

我们可以看到,当d中没有对应的key时最后返回的是个空列表,那是因为我们在设置defaultdict的时候用的工厂函数是list,而list的默认值是空列表,下面我们在看下如果工厂函数是set()会是什么样子

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(set)
for k, v in s:
    d[k].add(v)
print(d['yellow'])
print(d['white'])
print(list(d.items()))

结果输出如下:

解决Python字典查找报Keyerror的问题

补充:python报错出现 KeyError: 'longitude'

python报错出现 KeyError: ‘longitude'

报错界面如下图所示:

解决Python字典查找报Keyerror的问题

我在网上寻找了方法,确实找到一个解决方案:对你可能有用的解决方案一

但是我试了还是没用,于是,当我定睛一看,发现竟又是由于俺的粗心造成的。啊,如下图,按在longitude前面少了个逗号,

如下图:

解决Python字典查找报Keyerror的问题

所以这个问题就解决啦,好,我继续我的课程设计了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python迭代和迭代器
Mar 28 Python
Python设计模式之抽象工厂模式
Aug 25 Python
python利用拉链法实现字典方法示例
Mar 25 Python
浅述python中深浅拷贝原理
Sep 18 Python
利用python如何在前程无忧高效投递简历
May 07 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
python pygame实现球球大作战
Nov 25 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
python pip如何手动安装二进制包
Sep 30 Python
用Python可视化新冠疫情数据
Jan 18 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
tensorflow中的数据类型dtype用法说明
May 26 #Python
详解Python魔法方法之描述符类
May 26 #Python
使用tensorflow 实现反向传播求导
python基础学习之递归函数知识总结
TensorFlow的自动求导原理分析
Django分页器的用法你都了解吗
May 26 #Python
You might like
ftp类(myftp.php)
2006/10/09 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
js闭包用法实例详解
2016/12/13 Javascript
如何使用angularJs
2017/05/08 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python3+PyQt5实现柱状图
2018/04/24 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
大学生素质拓展活动方案
2014/02/11 职场文书
监察建议书范文
2014/03/12 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
月考总结与反思
2015/10/22 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python