解决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下载图片实现方法(超简单)
Jul 21 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
详解flask入门模板引擎
Jul 18 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
python如何实现视频转代码视频
Jun 17 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
python入门教程之基本算术运算符
Nov 13 Python
解决Django transaction进行事务管理踩过的坑
Apr 24 Python
Python中的socket网络模块介绍
Jul 23 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
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
webpack打包nodejs项目的方法
2018/09/26 NodeJs
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python获取邮件地址的方法
2015/07/10 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
解决Python中回文数和质数的问题
2019/11/24 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Django 路由层URLconf的实现
2019/12/30 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
会计电算化大学生职业规划书
2014/02/05 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
个人授权委托书格式
2014/08/30 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
项目转让协议书
2014/10/27 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript