📅  最后修改于: 2023-12-03 15:33:59.330000             🧑  作者: Mango
在Python中,defaultdict(list)
是一种非常有用的数据结构。它是dict
的一个子类,用于创建一个字典对象,当访问不存在的键时,会返回一个空列表而不是一个KeyError异常。
from collections import defaultdict
# 创建一个空的defaultdict(list)
d = defaultdict(list)
# 添加键值对
d['fruit'].append('apple')
d['fruit'].append('banana')
d['fruit'].append('orange')
d['vegetable'].append('carrot')
print(d['fruit']) # ['apple', 'banana', 'orange']
print(d['vegetable']) # ['carrot']
print(d['unknown']) # []
在上面的例子中,我们创建了一个空的defaultdict(list)
,然后向其添加键值对。当我们访问已存在的键时,返回其对应的列表;当我们访问不存在的键时,返回一个空列表。
除了默认值为list
,defaultdict
还可以使用任何其他可调用对象作为默认工厂。比如,我们可以指定默认值为int
、set
等。
from collections import defaultdict
# 自定义default_factory
d = defaultdict(int)
d['foo'] += 1
d['bar'] += 2
print(d) # defaultdict(<class 'int'>, {'foo': 1, 'bar': 2})
在上面的例子中,我们创建了一个空字典,并指定其默认值为int
。当我们访问不存在的键时,默认值为0,因此 d['foo'] += 1
相当于 d['foo'] = d['foo'] + 1
,将原来的0加1,得到1。
defaultdict(list)
非常适用于需要管理列表的场景。使用defaultdict
可以让我们更加简洁地代码实现,并且不用担心KeyError异常。在处理一些函数的返回值也很有用,如统计字符频率等计算中经常用到。