Python字典查找key不存在报错时的解决方法:setdefault

解决Python字典查找报Keyerror的问题

Python字典查找key不存在报错时的解决方法:setdefault

2021 年 05 月 26 日 15 时 43 分 58 分进行了更新,更新的作者是幸运的 Alina。

这篇文章主要是介绍如何解决 Python 字典查找时报 Keyerror 的问题,它具有较高的参考价值,希望能对大家有所助益。倘若存在错误或者未考虑周全之处,恳请不吝给予指教。

Python的字典一般都直接查找key ,比如

dict={'a':1,'b':2,'c':3}
print(dict['a'])

但是当查找的 key 不存在时,就会出现报错:KeyError:

比如你要查看print(dict['d'])

这个时候 dict 中没有这个 key ,所以会直接报错。而此时 Python 给我们提供了一种很棒的解决方法,即使用

- 还可以设置一个值,如果 key 在字典中不存在,就将这个值设置为指定的值,默认为 None。

那么这里我们可以用此方法解决:

print(dict.setdefault('d',0))

然后就没有问题啦。需要注意的是,当要往字典(dict)中添加新值时,就使用 setdefault 函数。如果只是单纯进行查找,遇到键不存在,或者希望在通过这个键读取值时能得到一个默认值,那么建议使用 defaultdict。

首先介绍一下这个所谓的 defaultdict,它来自于 collections 模块。collections 是一个集合模块。defaultdict(function_factory)构建的是一个类似 dictionary 的对象,其 key 的值可自行确定赋值,而 value 的类型是 function_factory 的类实例,并且具有默认值。这里还引入了一个概念,即工厂函数,在 Python 中,工厂函数指的是那些内建函数,它们都是类对象,当调用它们时,实际上是创建了一个类实例。

比如像 int()、str()、set()之类的,接下来我们来看一些例子:

import collections
s 中有('red', 1)。
创建一个名为 d 的对象,它是一个 collections.defaultdict 类型,其默认值是一个空列表。
for k, v in s:
    d[k].append(v)
print(d['yellow'])
print(d['white'])
print(list(d.items()))

我们最后得到的输出结果如下:

我们可以看到,当 d 中不存在对应的 key 时,最终返回的是一个空列表。这是因为在设置 defaultdict 时,我们使用的工厂函数是 list,而 list 的默认值就是空列表。接下来,我们再来看一下如果工厂函数是 set() 会是什么情况。

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
创建了一个名为 d 的变量,它是一个 collections.defaultdict(set)类型的对象,用于存储键值对,其中值的类型是集合 set 。
for k, v in s:
    d[k].add(v)
print(d['yellow'])
print(d['white'])
print(list(d.items()))

结果输出如下:

python 报错显示出现了 KeyError: 'longitude'

python 报错显示存在 KeyError: ‘longitude’

报错界面如下图所示:

我在网上进行了寻找方法的行为,最终确实找到了一个解决方案,这个解决方案对你可能是有用的,即解决方案一。

但是我进行了尝试,然而还是没有效果。接着,当我集中目光仔细看时,发现竟然又是因为我的粗心而导致的。啊,就像下面的图所示,在“longitude”前面少加了一个逗号。

如下图:

所以这个问题就解决啦,好,我继续我的课程设计了。

这是个人的经验,希望能给大家当作参考,同时也希望大家多多支持脚本之家。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读