解决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中类的定义与使用
Apr 11 Python
Python实现购物车购物小程序
Apr 18 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
pyqt 实现为长内容添加滑轮 scrollArea
Jun 19 Python
python与mysql数据库交互的实现
Jan 06 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
python搜索算法原理及实例讲解
Nov 18 Python
python wsgiref源码解析
Feb 06 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爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP会话控制实例分析
2016/12/24 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
网页设计个人找工作求职信
2013/11/28 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android