解决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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
基于python判断目录或者文件代码实例
Nov 29 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python气泡提示与标签的实现
Apr 01 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
Python字符串查找基本操作代码案例
Oct 27 Python
python3实现常见的排序算法(示例代码)
Jul 04 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 基于文件头的文件类型验证类函数
2012/05/01 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php分页函数示例代码分享
2014/02/24 PHP
php银联网页支付实现方法
2015/03/04 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
一个用js实现的页内搜索代码
2007/05/23 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
Js基础学习资料
2010/11/23 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
python随机生成指定长度密码的方法
2015/04/04 Python
详解Python中表达式i += x与i = i + x是否等价
2017/02/08 Python
Django权限机制实现代码详解
2018/02/05 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
const和static readonly区别
2013/05/20 面试题
车间工艺员岗位职责
2013/12/09 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
护士个人总结范文
2015/02/13 职场文书
施工安全员岗位职责
2015/04/11 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript