主页
文章
知识库
云盘
工具
登录
登录
注册
忘记密码
反馈
文章
defaultdict 基本用法
defaultdict 基本用法
lyjin
2025-01-20
> `defaultdict` 是 Python 的 `collections` 模块中的一个工具,它是 `dict` 的子类,但与普通的字典不同,它在访问不存在的键时会自动为该键生成一个默认值,而不是抛出 `KeyError`。 ### defaultdict 基本用法 1. **导入和创建** ```python from collections import defaultdict # 创建一个 defaultdict,默认值为 int(即 0) dd = defaultdict(int) ``` 2. **使用** - 当访问一个不存在的键时,defaultdict 会使用提供的工厂函数生成一个默认值,并将其赋给该键。 ```python dd['a'] += 1 # 'a' 的默认值是 0,之后变为 1 print(dd) # defaultdict(<class 'int'>, {'a': 1}) ``` ### 常见用法 1. **计数器** `defaultdict` 可以用来替代 `Counter` 进行简单的计数操作: ```python text = "apple banana apple orange banana apple" word_count = defaultdict(int) for word in text.split(): word_count[word] += 1 print(word_count) # defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1}) ``` 2. **分组** 将数据按照某个条件分组: ```python data = [('a', 1), ('b', 2), ('a', 3), ('b', 4), ('c', 5)] group = defaultdict(list) for key, value in data: group[key].append(value) print(group) # defaultdict(<class 'list'>, {'a': [1, 3], 'b': [2, 4], 'c': [5]}) ``` 3. **嵌套字典** 方便处理嵌套结构的字典: ```python nested_dict = defaultdict(lambda: defaultdict(int)) nested_dict['a']['b'] += 1 print(nested_dict) # defaultdict(<function <lambda>>, {'a': defaultdict(<class 'int'>, {'b': 1})}) ``` 4. **默认值处理** 创建一个默认返回固定值的字典: ```python dd = defaultdict(lambda: 'default_value') print(dd['unknown']) # default_value ``` ### 使用注意事项 1. **工厂函数** - 工厂函数必须是一个可调用对象,如类型(`int`, `list`, 等)或自定义函数(`lambda`)。 - 如果不提供工厂函数,`defaultdict` 会报错。 2. **默认值的插入** 访问不存在的键时,`defaultdict` 会自动创建一个键并插入默认值,这一点可能导致意外行为: 2. **避免误用** - 如果没有特别需要默认值的功能,普通字典可能更合适。
分享
×
用手机扫码分享
没有评论
请登陆后评论
新建评论
移除
关闭
提交