在 Python 中,collections
模块提供了许多强大的数据结构,能够简化开发中的常见任务。defaultdict
是其中之一,它是 dict
的一个子类,扩展了字典的功能,提供了默认值的机制,避免了许多常见的错误。本文将详细介绍如何使用 defaultdict
,并通过实际示例帮助大家更好地理解它的使用场景和优势。
一、什么是 defaultdict
?
defaultdict
是 Python 标准库 collections
模块中的一个类,它与普通的 dict
类似,但提供了一个额外的功能:为字典的缺失键提供默认值。使用 defaultdict
,可以为字典指定一个工厂函数,当访问一个不存在的键时,会自动生成一个默认值,而不是抛出 KeyError
异常。
基本语法
defaultdict
的基本语法如下:
from collections import defaultdict
defaultdict(default_factory)
- 1
- 2
- 3
default_factory
:是一个可调用对象(如函数、类等),用于生成缺失键的默认值。如果未提供,defaultdict
会默认使用None
。
二、defaultdict
的工作原理
与普通字典不同,当通过 defaultdict
访问一个不存在的键时,defaultdict
会自动调用 default_factory
来生成默认值,并将其赋给该键。这样,不需要先检查键是否存在,避免了常见的错误处理模式。
例如:
from collections import defaultdict
# 使用 int 作为 default_factory,int() 默认返回 0
dd = defaultdict(int)
print(dd['missing_key']) # 输出 0
- 1
- 2
- 3
- 4
- 5
在上面例子中,dd['missing_key']
没有抛出 KeyError
,而是返回了 int()
的结果,即 0
。
三、defaultdict
的常见用法
1. 计数器(使用 int
作为默认工厂)
一个非常常见的应用场景是统计某些元素出现的次数。例如,统计文本中每个单词的出现频率:
from collections <

一杯万象
微信公众号
高级工程师,《Visual C++编程实战》作者


评论记录:
回复评论: