解决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批量同步web服务器代码核心程序
Sep 01 Python
Python常用内置函数总结
Feb 08 Python
python冒泡排序简单实现方法
Jul 09 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
python web基础之加载静态文件实例
Mar 20 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
python把1变成01的步骤总结
Feb 27 Python
Django+Xadmin构建项目的方法步骤
Mar 06 Python
python for和else语句趣谈
Jul 02 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
PHP技术开发技巧分享
2010/03/23 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
Thinkphp中的curd应用实用要点
2015/01/04 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php单例模式的简单实现方法
2016/06/10 PHP
php加密解密字符串示例
2016/10/13 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
详解Vue方法与事件
2017/03/09 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
js实现星星打分效果
2020/07/05 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
党务公开方案
2014/05/06 职场文书
禁毒宣传标语
2014/06/19 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技