欢迎访问宙启技术站
智能推送

使用DefaultDict()定义具有默认值的字典

发布时间:2023-12-14 13:49:23

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 异常的需要。