今天在阅读代码时,发现了一个函数叫defaultdict,从字面上可以拆成default和dict,就是默认字典的意思,准确来说是字典的默认值。这个方法是在collections内置模块中,因此使用时,需要先从模块导入,如下所示:
from collections import defaultdict
当我们在访问字典时,有可能存在访问的键值key不存在,那么就会返回一个KeyError报错
KeyError: 'A'
解决这个问题的defaultdict是属于collections 模块下的一个工厂函数,用于构建字典对象, 其中的参数定义了key对应的值的数据类型,如下面的代码,字典result中值的数据类型是list。
from collections import defaultdictresult = defaultdict(list)data = [('A', 11), ('A', 12), ('A', 13), ('B', 21), ('B', 22), ('B', 23)]for (key, value) in data: result[key].append(value)print(result) # defaultdict(<type 'list'>, {'A': [11, 12, 13], 'B': [21, 22, 23]})
如果访问一个字典中不存在的key,就会返回默认值,空的列表。
print(result['A'])print(result['C'])
输出结果:
[11, 12, 13]
[]
下面还测试了不同的数据类型作为字典的默认值。
dict1 = defaultdict(int)dict2 = defaultdict(str)dict3 = defaultdict(list)dict4 = defaultdict(tuple)dict4['a'] = 'hello world'print(dict1[0], dict2[0], dict3[0], dict4[0], dict4['a'])
输出结果:(0, '', [], (), 'hello world')
前面四个结果都是输出默认值,最后一个就输出存在的key 为'a'的值hello world。
经过上面的测试和说明,相信大家对defaultdict函数的使用有了更深入的理解。
联系客服