collections.defaultdict
是 Python collections
模块中的一个类,它提供了一种便捷的方式来创建带有默认值的字典。当你尝试访问一个不存在的键时,它会自动为该键创建一个默认值。这在处理计数、分类等任务时特别有用。
collections.defaultdict(int)
特别常见,它创建了一个默认值为 0
的字典。当你尝试访问一个不存在的键时,该键会自动被初始化为 0
。这是因为 int()
返回 0
。
例子
import collections
# 创建一个默认值为0的defaultdict
count_dict = collections.defaultdict(int)
# 访问一个不存在的键
print(count_dict['a']) # 输出0,因为键'a'不存在且默认值为0
# 给键'a'赋值
count_dict['a'] += 1
print(count_dict['a']) # 输出1,因为我们给键'a'增加了1
# 给键'b'赋值
count_dict['b'] += 3
print(count_dict['b']) # 输出3,因为我们给键'b'增加了3
# 访问一个还未赋值的键
print(count_dict['c']) # 输出0,因为键'c'不存在且默认值为0
详细解释
导入
collections
模块:import collections
创建
defaultdict
实例:count_dict = collections.defaultdict(int)
这里
defaultdict(int)
创建了一个字典,其默认工厂函数是int()
。当访问一个不存在的键时,这个键会被自动初始化为0
。访问不存在的键:
print(count_dict['a']) # 输出0
尝试访问键
'a'
,因为'a'
不存在,所以defaultdict
会调用int()
并返回0
。然后,'a'
被初始化并存储在字典中,值为0
。给键赋值:
count_dict['a'] += 1 print(count_dict['a']) # 输出1
键
'a'
的值增加了1
,现在键'a'
的值为1
。给另一个键赋值:
count_dict['b'] += 3 print(count_dict['b']) # 输出3
键
'b'
的值增加了3
,现在键'b'
的值为3
。再次访问一个不存在的键:
print(count_dict['c']) # 输出0
尝试访问键
'c'
,因为'c'
不存在,所以defaultdict
会调用int()
并返回0
。然后,键'c'
被初始化并存储在字典中,值为0
。
适用场景
使用 collections.defaultdict(int)
主要适用于需要对项目进行计数的场景,比如:
统计单词出现频率:
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple'] word_count = collections.defaultdict(int) for word in words: word_count[word] += 1 print(word_count) # 输出: defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1})
统计字符出现频率:
text = "hello world" char_count = collections.defaultdict(int) for char in text: char_count[char] += 1 print(char_count) # 输出: defaultdict(<class 'int'>, {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
defaultdict
提供了一种方便的方法来避免显式的初始化操作,使代码更简洁易读。