解决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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Django 跨域请求处理的示例代码
May 02 Python
python字符串与url编码的转换实例
May 10 Python
tensorflow实现简单逻辑回归
Sep 07 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
python中的数据结构比较
May 13 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
python实现图像随机裁剪的示例代码
Dec 10 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
Django实现自定义404,500页面教程
2017/03/26 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python中有关时间日期格式转换问题
2019/12/25 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
计算机毕业大学生推荐信
2013/12/01 职场文书
寄语是什么意思
2014/04/10 职场文书
治安消防安全责任书
2014/07/23 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书