📜  python defaultdict(list) - Python (1)

📅  最后修改于: 2023-12-03 15:33:59.330000             🧑  作者: Mango

Python defaultdict(list)

在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),然后向其添加键值对。当我们访问已存在的键时,返回其对应的列表;当我们访问不存在的键时,返回一个空列表。

自定义default_factory

除了默认值为listdefaultdict还可以使用任何其他可调用对象作为默认工厂。比如,我们可以指定默认值为intset 等。

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异常。在处理一些函数的返回值也很有用,如统计字符频率等计算中经常用到。