Python中的defaultdict
是一个有用的工具,它可以在创建字典时设置默认值,当查找不存在的键时,直接返回默认值,而不是抛出KeyError异常。默认值是由用户指定的构造函数返回的。
默认字典的创建方式如下所示:
from collections import defaultdict
my_dict = defaultdict(int) # 值的默认类型是int,也可以是list、set等类型
如上面的代码所示,使用defaultdict
创建字典时,我们需要提供一个参数,即默认值的类型。这里设置为int类型,表示当我们查找一个不存在的键时,会返回int类型的默认值0。
假设我们要计算字符串中各个字符出现频率的例子,使用defaultdict
可以使代码更加紧凑,示例如下:
from collections import defaultdict
text = "hello world"
char_freq = defaultdict(int)
for char in text:
char_freq[char] += 1
print(char_freq)
输出结果为:
defaultdict(<class 'int'>, {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
在上面的示例中,我们使用defaultdict
创建了一个名为char_freq
的字典,其中默认值为0。然后我们遍历字符串中的每个字符,将该字符作为键,频率作为值,统计每个字符的出现次数。当我们首次访问某个字符时,该键不存在,此时会自动创建该键,并使用默认值0进行初始化。之后再每次访问该键时,就可以直接更新对应的值。
另外一个示例,假设我们要求列表中各元素的平方的和。代码如下:
from collections import defaultdict
my_list = [1, 2, 3, 4, 5]
square_sum = defaultdict(int)
for i in my_list:
square_sum["sum"] += i**2
print(square_sum["sum"])
输出结果为:
55
在上面的示例中,我们使用defaultdict
创建了一个名为square_sum
的字典,其中默认值为0。然后我们遍历列表中的每个元素,将该元素的平方加到“sum”
键对应的值中。当我们首次访问“sum”
键时,该键不存在,此时会自动创建该键,并使用默认值0进行初始化。之后再每次访问该键时,就可以直接更新对应的值。
综上所述,defaultdict
是Python中一个非常有用的工具,可以使我们的代码更加紧凑,代码逻辑更加清晰。