python-defaultdict的使用

本文介绍了Python中defaultdict的使用方法及与普通字典dict的区别。defaultdict在遇到未定义的key时,会根据提供的工厂函数返回默认值,避免了KeyError的抛出,使代码更加健壮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识defaultdict

之前在使用字典的时候, 用的比较随意, 只是简单的使用dict。然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登场了。

如何使用defaultdict

可以这样

from collections import defaultdict

d1 = defaultdict(int)

或者这样

import collections

d1 = collections.defaultdict(int)

defaultdict与dict实例化字典类型的区别

使用defaultdict任何未定义的key都会默认返回一个根据method_factory参数不同的默认值, 而相同情况下dict()会返回KeyError.
比较下面代码:

d1 = dict()
d2 = defaultdict(list)
print(d1['a'])
print(d2['a'])

defaultdict的构造

python官方文档中对defaultdict的定义如下:

class collections.defaultdict([default_factory[, ...]])

python官方文档中对defaultdict的解释如下:

defaultdic
dict subclass that calls a factory function to supply missing values

default_factory 接收一个工厂函数作为参数, 例如int str list set等.
defaultdict在dict的基础上添加了一个__missing__(key)方法, 在调用一个不存的key的时候, defaultdict会调用__missing__, 返回一个根据default_factory参数的默认值, 所以不会返回Keyerror.

Example

Example 1

s = 'mississippi'
d = defaultdict(int)
for k in s:
    d[k] += 1
print(d)

Example 2

s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set)
for k, v in s:
    d[k].add(v)
print(d)

转载于:https://www.cnblogs.com/leadership/p/11556010.html

### Python `defaultdict` 使用方法及实例 #### 创建默认字典对象 `defaultdict` 是 Python 的 collections 模块中的一个类,它提供了一种方便的方式来创建具有默认值的字典。当访问不存在的键时,会自动调用工厂函数来生成该键对应的初始值。 ```python from collections import defaultdict # 定义整数类型的 default_dict,默认值为 0 int_default_dict = defaultdict(int) print(int_default_dict['nonexistent_key']) # 输出: 0 ``` #### 列表作为默认值 如果希望某个键对应的是列表,则可以将 list 类型传递给 `defaultdict()` 构造器: ```python list_default_dict = defaultdict(list) list_default_dict['fruits'].append('apple') list_default_dict['vegetables'].extend(['carrot', 'potato']) for category, items in list_default_dict.items(): print(f"{category}: {items}") # fruits: ['apple'] # vegetables: ['carrot', 'potato'] ``` #### 字符串计数案例 下面是一个简单的例子,展示如何利用 `defaultdict` 来统计字符串中字符出现次数: ```python def count_characters(text): char_counter = defaultdict(int) for ch in text.lower(): if ch.isalpha(): char_counter[ch] += 1 return dict(char_counter) text_example = "Hello World!" result = count_characters(text_example) print(result) # {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1} ``` 通过上述代码片段可以看出,在处理数据结构初始化以及简化某些逻辑流程方面,`defaultdict` 提供了一个非常有用的功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值