_collections模块中的defaultdict():解决字典中缺失键的常见问题
defaultdict()是Python中collections模块的一个类。它是内置字典类的一个子类,用于创建字典,并在字典中获取缺失的键时提供一个默认值。
在使用普通的字典时,如果试图获取一个不存在的键,会引发KeyError异常。但是使用defaultdict()时,如果试图获取一个不存在的键,它会返回一个默认值,而不会引发异常。
下面是defaultdict()的基本用法和几个使用示例。
## 基本用法
要使用defaultdict(),需要使用from collections import defaultdict导入该类。然后使用defaultdict()构造一个字典对象,可以通过传递一个可调用的对象作为参数来设置默认值。这个可调用对象将在试图获取一个不存在的键时被调用,它的返回值将成为对应键的值。
from collections import defaultdict my_dict = defaultdict(int)
在上面的例子中,我们使用int作为默认值的类型。这意味着当我们尝试获取一个不存在的键时,它将返回0作为默认值。
## 使用示例
让我们看几个使用defaultdict()的例子。
### 简单例子
from collections import defaultdict my_dict = defaultdict(int) my_dict['a'] = 1 my_dict['b'] = 2 print(my_dict['a']) # 输出: 1 print(my_dict['b']) # 输出: 2 print(my_dict['c']) # 输出: 0
在上面的例子中,我们向字典添加了键值对'a': 1和'b': 2。然后我们尝试获取键'c',它不存在于字典中。但是由于我们使用int作为默认值,所以获取到的默认值为0。
### 自定义默认值
from collections import defaultdict
def custom_default():
return 'Unknown'
my_dict = defaultdict(custom_default)
my_dict['a'] = 1
my_dict['b'] = 2
print(my_dict['a']) # 输出: 1
print(my_dict['b']) # 输出: 2
print(my_dict['c']) # 输出: 'Unknown'
在上面的例子中,我们定义了一个名为custom_default()的函数,它返回字符串'Unknown'作为默认值。然后,我们将这个函数作为defaultdict()的参数,创建了一个字典对象。现在,当我们试图获取键'c'时,返回的默认值为'Unknown'。
### 列表作为默认值
from collections import defaultdict
my_dict = defaultdict(list)
my_dict['fruits'].append('apple')
my_dict['fruits'].append('banana')
print(my_dict['fruits']) # 输出: ['apple', 'banana']
在上面的例子中,我们使用list作为默认值的类型。这意味着,当我们尝试获取一个不存在的键时,它将返回一个空列表作为默认值。然后,我们向键'fruits'对应的列表中连续添加了两个水果。
### 使用lambda函数作为默认值
from collections import defaultdict my_dict = defaultdict(lambda: 'Not found') my_dict['a'] = 1 my_dict['b'] = 2 print(my_dict['a']) # 输出: 1 print(my_dict['b']) # 输出: 2 print(my_dict['c']) # 输出: 'Not found'
在上面的例子中,我们使用lambda函数作为默认值,它会返回字符串'Not found'。所以当我们试图获取一个不存在的键时,返回的默认值为'Not found'。
## 总结
defaultdict()是collections模块中的一个有用的类,用于在字典中获取缺失的键时提供一个默认值。使用它可以避免键错误异常,并简化代码逻辑。
希望上述使用示例能够帮助你理解和使用defaultdict()。
