解决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学习手册中的python多态示例代码
Jan 21 Python
Python的垃圾回收机制深入分析
Jul 16 Python
python实现在windows服务中新建进程的方法
Jun 30 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
Python如何生成树形图案
Jan 03 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
Python os.rename() 重命名目录和文件的示例
Oct 25 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Python super()方法原理详解
Mar 31 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
python 批量压缩图片的脚本
Jun 02 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 设计模式之观察者模式介绍
2012/02/22 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
php依赖注入知识点详解
2019/09/23 PHP
Jquery 设置标题的自动翻转
2009/10/03 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
koa router 多文件引入的方法示例
2019/05/22 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
python中模块的__all__属性详解
2017/10/26 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
京剧自荐信
2014/01/26 职场文书
元旦联欢会感言
2014/03/04 职场文书
保险经纪人求职信
2014/03/11 职场文书
2014年端午节活动方案
2014/03/11 职场文书
法制宣传月活动方案
2014/05/11 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
军训口号
2014/06/13 职场文书
档案工作汇报材料
2014/08/21 职场文书
科学发展观演讲稿
2014/09/11 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
百万英镑观后感
2015/06/09 职场文书
人事任命书范本
2015/09/21 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server