解决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中声明只包含一个元素的元组数据方法
Aug 25 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 Python
sublime text 3配置使用python操作方法
Jun 11 Python
详解Python 模拟实现生产者消费者模式的实例
Aug 10 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
Python中collections模块的基本使用教程
Dec 07 Python
Python多项式回归的实现方法
Mar 11 Python
python树的同构学习笔记
Sep 14 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
python 如何引入协程和原理分析
Nov 30 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
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
Python实现简单的可逆加密程序实例
2015/03/05 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
中专毕业生的自我鉴定
2013/12/01 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
法定授权委托证明书
2014/09/27 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
《海上日出》教学反思
2016/02/23 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python