但是如果在查找的key不存在的时候就会报:KeyError:

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

由于这个时候dict里面并没有这个key ,所以就会直接报错,那么这个时候其实python给我们提供了一种很棒的解决方法,那就是用

setdefault,用法如下: dict.setdefault(key,[这里设置如果不存在想将值设置为啥,默认为None])

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

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()))

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

我们可以看到,当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的字典一般都直接查找key ,比如dict={'a':1,'b':2,'c':3}print(dict['a'])但是如果在查找的key不存在的时候就会报:KeyError:比如你要查看print(dict['d'])由于这个时候dict里面并没有这个key ,所以就会直接报错,那么这个时候其实python给我们提供了一种很棒的解决方法,那就是用setdefa... 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。 Item 对象是种简单的容器,保存了爬取到得数据。 其提供了 类似于字典(dictionary-like) 的API以及用于声明可用字段的简单语法。
虽然说Python现在有f开头的字符串用来格式化了,但是出于习惯,以及在部分场景下,比如需要混合使用原始字符串(raw string)的时候,感觉还是format函数好用。 这次写的时候遇到了奇怪的KeyError。我一开始是这么写的: s = r''' function foo() { printf("{}"); '''.format(arg) 但是这样会错。 后来发现,因为format自己用大括号作为占位符,如果字符串里本身有大括号,还得转义一下。具体怎么转义,就是用两个大括号,所以应该改成
出现这种错误,首先要看一下你是否使用了字典,错误提示的意思是找不到对应的键值。 例如,给定如下字典: book_dict = {"price": 500, "bookName": "Python设计", "weight": "250g"} 若是查找字典中存在的key,则正常输出: print(book_dict["price"]) 运行结果如下: 若是查找字典中不存在的key,则错: print(book_dict["sdfs"]) 如上所示,错提示就是KeyError:。对于这种问题,可以使
问题:字典从文件中读出,字典中key含中文,明明有key,但是却KeyError:key不存在 预期:取出对应key的value 解决:将key前加上u,对key进行unicode编码 说明:从文件中读出的dict,其key被unicode编码了 >>> dict["小红"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: '\xe5\xb0\x8f\xe7\xba\xa2'
错误反馈:KeyError: 'Arrival' 原因分析:一般KeyError原因都是因为想要找的那个某一项或几项在相应的数据集里找不到(或者是打错了之类的。) 例如:`arrivalDate = schedule['Arrival'] ` 运行后错: `KeyError Traceback (most recent call last) D:\Anaconda\lib\site-packages\panda...
第一种解决方法,首先测试key是否存在,然后才进行下一步操作,如: 第二种解决方法,修改要输出的值为a或b或c 转载自:Python 常见错类型整理(一) - 小码果 - 博客园
Python3 str.format传入参数KeyError解决办法KeyError错误描述与解决补充知识 KeyError错误描述与解决 以’w’的方式调用参数,会产生KeyError错 # 定义变量c >>>c = {'w':'w', 'o': 'o', 'r': 'r', 'l': 'l', 'd': 'd'} {'w':'w', 'o': 'o', 'r': 'r'...
`KeyError: -1` 表示在字典中使用了一个不存在的键 `-1`。通常情况下,当你使用字典的 `[]` 运算符时,如果指定的键在字典中不存在,Python 会抛出 `KeyError` 异常。 例如,以下代码会抛出 `KeyError` 异常: ``` python my_dict = {'a': 1, 'b': 2} print(my_dict['c']) # KeyError: 'c' 这是因为字典 `my_dict` 中不存在键为 `'c'` 的元素。 对于 `KeyError: -1` 错误,你需要检查代码中字典的使用,看看是否在字典中使用了一个不存在的键 `-1`。如果确实需要使用 `-1` 作为键,可以先使用 `in` 运算符判断该键是否存在,或者使用字典提供的 `get()` 方法,这样就不会因为使用一个不存在的键而抛出 `KeyError` 异常了。例如: ``` python my_dict = {1: 'a', 2: 'b'} if -1 in my_dict: print(my_dict[-1]) else: print("KeyError: -1") # 或者使用 get() 方法 print(my_dict.get(-1, "KeyError: -1")) 上述代码中,首先使用 `in` 运算符判断 `-1` 是否在 `my_dict` 中,如果存在则使用 `my_dict[-1]` 获取对应值,否则打印 "KeyError: -1"。另外一种方法是使用 `get()` 方法获取对应值,如果键不存在则返回默认值 `"KeyError: -1"`。