解决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中操作文件之read()方法的使用教程
May 24 Python
Python实现的爬虫功能代码
Jun 24 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
tensorflow中next_batch的具体使用
Feb 02 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
Python可以实现栈的结构吗
May 27 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
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
php实现监听事件
2013/11/06 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
PHP生成唯一订单号
2015/07/05 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
web.py在模板中输出美元符号的方法
2014/08/26 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python进阶篇之字典操作总结
2016/11/16 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
python监控nginx端口和进程状态
2019/09/06 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
Python学习之time模块的基本使用
2021/01/17 Python
酒店中秋节促销方案
2014/01/30 职场文书
公司委托书范本
2014/04/04 职场文书
群众路线个人整改方案
2014/10/25 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL