📅  最后修改于: 2023-12-03 15:30:25.827000             🧑  作者: Mango
在 Python 中,defaultdict
是一个非常有用的数据结构。它是 dict
的一个子类,可以指定默认值,并且在访问不存在的键时会返回这个默认值。defaultdict
的初始化函数接受一个可调用对象(函数、lambda 表达式等),用于指定默认值。
下面介绍 defaultdict
的常见用途:计数键值对。
假设我们有一个字符串列表,需要统计每个字符出现的次数。我们可以使用 defaultdict
来统计计数。
from collections import defaultdict
str_list = ['apple', 'banana', 'cherry']
char_count = defaultdict(int)
for s in str_list:
for c in s:
char_count[c] += 1
print(char_count)
运行结果如下:
defaultdict(<class 'int'>, {'a': 2, 'p': 3, 'l': 2, 'e': 3, 'b': 1, 'n': 2, 'c': 2, 'h': 1, 'r': 2, 'y': 1})
上面的代码中,我们首先创建了一个空的 defaultdict
对象 char_count
,并指定默认值为 int
类型的零。然后我们遍历字符串列表中的每个字符串,再遍历每个字符串中的每个字符,将字符计数加一。
这种方法的优点是代码简洁、适用范围广,不仅适用于字符串列表,还适用于任何序列数据类型。而且使用 defaultdict
比手动创建计数字典更为方便和优雅。
注意:如果我们使用普通的字典对象来计数,会出现 KeyError
异常,需要手动判断如果不存在就添加一个初始值。而使用 defaultdict
可以省略掉这个判断过程。