Python内置的字典类型挺好用, 但有一个很麻烦的缺点, 当查询的键不存在时,就会报KeyError的错误, 影响程序的正常使用, 虽然可以用异常捕获处理, 但有时候还是不太方便.
collections模块中的defaultdict 类型 就为我们提供了一个解决方案, 使用defaultdict 类型时, 当查询的键不存在,就会用一个默认的值代替.
下面就来看一下常见类型的默认值
from collections import defaultdict def defaultdict_test(): dict1 = defaultdict(int) dict2 = defaultdict(float) dict3 = defaultdict(complex) dict4 = defaultdict(str) dict5 = defaultdict(tuple) dict6 = defaultdict(list) dict7 = defaultdict(set) dict8 = defaultdict(dict) print(type(dict1)) print(dict1[2]) print(dict2[2]) print(dict3[2]) print(dict4[2]) print(dict5[2]) print(dict6[2]) print(dict7[2]) print(dict8[2]) if __name__ == '__main__': defaultdict_test()
得到的结果如下
<class 'collections.defaultdict'> 0 0.0 0j () [] set() {}
字典类型自带一个方法, 可以在调用字典时处理这个问题
dict.setdefault()方法
设置默认值:有两个参数,一个是键的名称,另一个是默认值。如果键已经存在字典中就返回它的值,如果没有就将默认值保存并且返回该默认值。
strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy', 'kitten', 'puppy') counts = {} for kw in strings: counts.setdefault(kw, 0) counts[kw] += 1
标签:defaultdict,__,puppy,python,类型,print,默认值 From: https://www.cnblogs.com/lauff/p/16668267.html