解决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将IP地址在整型和字符串之间轻松转换
Mar 22 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
python爬取淘宝商品销量信息
Nov 16 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
Python ATM功能实现代码实例
Mar 19 Python
配置python的编程环境之Anaconda + VSCode的教程
Mar 29 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
Python深度学习之Pytorch初步使用
May 20 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
详解Python的数据库操作(pymysql)
2019/04/04 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
python集合能干吗
2020/07/19 Python
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
优秀的茶餐厅创业计划书
2014/01/03 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
六个一活动实施方案
2014/03/21 职场文书
詹天佑教学反思
2014/04/30 职场文书
英语专业求职信
2014/07/08 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL