defaultdict 是 Python 中 collections 模组提供的一种字典类型,它是 dict 的子类,专门用来处理缺失键的情况。与普通字典相比,defaultdict 的主要特点是当你访问一个不存在的键时,它会自动为该键创建一个预设值,而不会引发 KeyError。

主要特点

自动创建缺失键: 当你访问一个不存在的键时,defaultdict 会自动使用你指定的工厂函数(如 list, int, str 等)来创建该键的值。可设置的预设值: 在创建 defaultdict 时,你可以指定一个工厂函数,这个函数会被调用以生成缺失键的预设值。

from collections import defaultdict

# 创建一个 defaultdict,预设值为空列表
dd_list = defaultdict(list)

# 对于不存在的键,自动创建一个空列表并添加元素
dd_list[\'fruits\'].append(\'apple\')
dd_list[\'fruits\'].append(\'banana\')

print(dd_list) # 输出: defaultdict(<class \'list\'>, {\'fruits\': [\'apple\', \'banana\']})

# 创建一个 defaultdict,预设值为整数(0)
dd_int = defaultdict(int)

# 对于不存在的键,自动创建并初始化为0
dd_int[\'a\'] += 1
dd_int[\'b\'] += 2

print(dd_int) # 输出: defaultdict(<class \'int\'>, {\'a\': 1, \'b\': 2})

你可以使用不同的工厂函数来定义预设值:

  • 使用 list:

dd = defaultdict(list)
dd[\'key\'].append(1)
print(dd) # 输出: defaultdict(<class \'list\'>, {\'key\': [1]})

  • 使用 int:

dd = defaultdict(int)
dd[\'count\'] += 1
print(dd) # 输出: defaultdict(<class \'int\'>, {\'count\': 1})

  • 使用自定义函数:

def custom_default():
return "default_value"

dd = defaultdict(custom_default)
print(dd[\'missing_key\']) # 输出: default_value

总结

defaultdict 是一个非常有用的工具,可以简化处理缺失键的代码,使代码更加简洁和易读。它特别适合用于计数、分组等需要动态添加键值对的场