做网站需要好多钱,怎么注册免费网站,静态网页设计公司报价,建设品牌网站的好处d defaultdict(list) 和 d {} 在Python中代表了两种不同类型的字典初始化方式#xff0c;它们之间有几个关键的区别#xff1a;
1、类型
d defaultdict(list)#xff1a;这里使用的是 collections 模块中的 defaultdict 类。它是一个字典的子类#xff0c;提供了一个默…d defaultdict(list) 和 d {} 在Python中代表了两种不同类型的字典初始化方式它们之间有几个关键的区别
1、类型
d defaultdict(list)这里使用的是 collections 模块中的 defaultdict 类。它是一个字典的子类提供了一个默认值空列表用于在字典中自动处理缺失的键值。d {}这是一个普通的Python字典不会自动处理缺失的键值。
2、当访问不存在的键时
在使用 defaultdict(list) 时如果你尝试访问字典中不存在的键defaultdict 会自动为该键创建一个新条目并将默认值这里是空列表 list分配给这个键。在普通字典 d {} 中如果你尝试访问一个不存在的键Python会抛出一个 KeyError 异常。在这种情况下需要在访问不存在的键时手动处理 KeyError并初始化一个空列表。
3、用途
defaultdict(list) 常用于需要将多个值分配给一个键的场景例如在构建多值映射如一对多的关系时非常有用。普通字典 d {} 更适用于标准的键值对存储其中每个键映射到一个单独的值。
4、代码 假设我们有一组数据包含多个姓名和与每个姓名关联的一些数字。我们的目标是创建一个字典其中每个姓名都映射到一个包含所有相关数字的列表。 使用 defaultdict(list)
from collections import defaultdict# 初始化 defaultdict
names_dict defaultdict(list)# 添加数据
data [(Anna, 1), (Bob, 2), (Anna, 5), (Bob, 6), (Cara, 7)]for name, number in data:names_dict[name].append(number)# 输出结果
print(names_dict)
在这个例子中当我们添加一个元组 (name, number) 到 names_dict 时如果 name 还不在字典中defaultdict 会自动为 name 创建一个新条目并初始化一个空列表。然后 number 被追加到这个列表中。这避免了我们需要手动检查 name 是否已经存在于字典中。
使用普通字典 {}
# 初始化普通字典
names_dict {}# 添加数据
data [(Anna, 1), (Bob, 2), (Anna, 5), (Bob, 6), (Cara, 7)]for name, number in data:if name not in names_dict:names_dict[name] [] # 如果键不存在先创建空列表names_dict[name].append(number)# 输出结果
print(names_dict)
使用普通字典时我们必须首先检查 name 是否已经存在于字典中。如果不存在我们需要手动为这个键创建一个空列表然后才能追加 number。这意味着需要更多的代码来处理缺失的键。
结果对比 在这两个例子中最终的 names_dict 将是相同的
{Anna: [1, 5], Bob: [2, 6], Cara: [7]}但是使用 defaultdict 可以使代码更简洁且不需要手动处理缺失的键。这在处理复杂的数据结构时尤其有用。