解决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 31 Python
python&MongoDB爬取图书馆借阅记录
Feb 05 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
Python中with及contextlib的用法详解
Jun 08 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
python实现字符串和字典的转换
Sep 29 Python
在django view中给form传入参数的例子
Jul 19 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
用Python画小女孩放风筝的示例
Nov 23 Python
简单介绍django提供的加密算法
Dec 18 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
python游戏开发Pygame框架
Apr 22 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自动给网址加上链接的方法
2015/06/02 PHP
PHP常用的小程序代码段
2015/11/14 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
php和asp语法上的区别总结
2019/05/12 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
初学Python函数的笔记整理
2015/04/07 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
网络安全类面试题
2015/08/01 面试题
商场经理竞聘演讲稿
2014/01/01 职场文书
请假条怎么写
2014/04/10 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
安全保证书
2015/01/16 职场文书
学困生转化工作总结
2015/08/13 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python