使用DefaultDict()定义具有默认值的字典
DefaultDict() 用于创建带有默认值的字典。与普通的字典不同,当查询一个不存在的键时,DefaultDict 会返回指定的默认值,而不是抛出 KeyError 异常。
使用 DefaultDict() 需要导入 collections 模块。下面是一个创建默认值为 0 的 DefaultDict() 的例子:
from collections import defaultdict # 创建一个默认值为 0 的字典 numbers = defaultdict(int) # 添加键值对 numbers["one"] = 1 numbers["two"] = 2 print(numbers["one"]) # 输出 1 print(numbers["three"]) # 输出 0
在上述例子中,我们导入了 collections 模块并使用 defaultdict() 创建了一个名为 numbers 的字典,并将默认值设置为 0。然后,我们向 numbers 字典中添加两个键值对,"one": 1 和 "two": 2。
接着我们尝试获取键为 "one" 的值,这个键存在于字典中,所以返回值为 1。接着我们尝试获取一个不存在的键 "three",字典中并没有这个键,但是由于我们使用了 DefaultDict(),所以会返回默认值 0 而不是抛出 KeyError 异常。
除了使用内置类型作为默认值之外,我们还可以使用 lambda 函数来创建更复杂的默认值。下面是一个使用 lambda 函数创建默认值为一个空列表的例子:
from collections import defaultdict
# 创建一个默认值为 [] 的字典
fruits = defaultdict(lambda: [])
# 向字典中添加键值对
fruits["red"].append("apple")
fruits["red"].append("cherry")
fruits["green"].append("lime")
print(fruits) # 输出 defaultdict(<function <lambda> at 0x000002550BE44AF0>, {'red': ['apple', 'cherry'], 'green': ['lime']})
在这个例子中,我们创建了一个名为 fruits 的默认值为一个空列表的 DefaultDict()。然后,我们向字典中添加了三个键值对,对于颜色为 "red" 的水果,我们使用 append() 方法向对应的列表中添加了 "apple" 和 "cherry",而对于颜色为 "green" 的水果,我们添加了 "lime"。
最后,我们打印出字典 fruits,可以看到它以默认的形式进行了输出。
DefaultDict() 提供了一种简洁的方式来处理字典中不存在的键。它在处理需要给不存在的键设置默认值的情况下特别有用,并且减少了编写额外的逻辑以处理 KeyError 异常的需要。
