解决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实现获取序列中最小的几个元素
Sep 25 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
解读python logging模块的使用方法
Apr 17 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
树莓派升级python的具体步骤
Jul 05 Python
python+django+selenium搭建简易自动化测试
Aug 19 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出现web系统多域名登录失败的解决方法
2014/09/30 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
python字典多条件排序方法实例
2014/06/30 Python
解析Python编程中的包结构
2015/10/25 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
Python数据操作方法封装类实例
2017/06/23 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
股东授权委托书范本
2014/09/13 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
股份转让协议书范本
2015/01/27 职场文书
车位出租协议书范本
2016/03/19 职场文书
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers