有dict和defaultdict两种字典。
defaultdict 是 Python 标准库中 collections 模块提供的一个类,它是 dict 的一个子类,具有与普通字典相同的接口和功能,但在某些方面表现出不同的行为。 与普通的字典相比,defaultdict 的一个主要特征是在创建时可以指定一个默认值的工厂函数。当你尝试访问字典中不存在的键时,defaultdict 会使用该工厂函数来生成一个默认值,并将其与该键相关联。
示例:
# 计算字符频率 from collections import defaultdicts = "apple"freq1 = defaultdict(int)# 创建一个 defaultdict,指定默认值为 int 类型的 0 freq2 = dict() for char in s:freq1[char] += 1 #当freq1中没有char键时,会默认该键的值为0,因此可以正常做+1的操作#freq2[char] += 1 #这行会报错,因为dict中访问不存在的键时会报错freq2[char] = freq2.get([char], 0)+1 #get方法:当访问的[char]键存在时,会返回对应的值;不存在时返回0。这样不会报错print(freq1) # 输出: defaultdict(<class 'int'>, {'a': 1, 'p': 2, 'l': 1, 'e': 1}) print(freq2) # 输出: dict(<class 'int'>, {'a': 1, 'p': 2, 'l': 1, 'e': 1})
总结:
defaultdict类型,可以对不存在的键的值做加减操作,默认不存在的键的值是0
dict类型,在对键的值做操作时,需要加上get方法,避免访问到不存在的键导致报错