解决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使用正则表达式提取网页URL的方法
May 26 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
python 数据的清理行为实例详解
Jul 12 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
django表单的Widgets使用详解
Jul 22 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
python中类与对象之间的关系详解
Dec 16 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使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
js对文章内容进行分页示例代码
2014/03/05 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
jQuery实现动态文字搜索功能
2017/01/05 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python中几个比较常见的名词解释
2015/07/04 Python
python中logging库的使用总结
2017/10/18 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Numpy之reshape()使用详解
2019/12/26 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
生产部经理岗位职责
2013/12/16 职场文书
平民服装店创业计划书
2014/01/17 职场文书
元旦促销方案
2014/03/15 职场文书
春节请假条
2014/04/11 职场文书
2014年保育员工作总结
2014/12/02 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
创业计划书之养殖业
2019/10/11 职场文书
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB