Python - 添加字典项
添加字典项
在 Python 中添加字典项指的是向现有字典中插入新的键值对。字典是可变的数据结构,用于存储键值对集合,其中每个键与对应的值相关联。
向字典添加项可以让你在程序执行过程中根据需要动态更新和扩展其内容。
我们可以使用多种方式在 Python 中添加字典项,例如 −
- 使用方括号
- 使用 update() 方法
- 使用 comprehension
- 使用 unpacking
- 使用 Union Operator
- 使用 |= 运算符
- 使用 setdefault() 方法
- 使用 collections.defaultdict() 方法
使用方括号添加字典项
Python 中的方括号 [] 用于通过索引和切片操作访问序列(如列表和字符串)中的元素。此外,在处理字典时,方括号用于指定键以访问或修改相关联的值。
你可以通过在方括号中指定键并为其赋值来向字典添加项。如果键已存在于字典对象中,其值将被更新为新值;如果键不存在于字典中,则将添加一个新的键值对。
示例
在这个示例中,我们创建了一个名为 "marks" 的字典,键表示姓名,其对应的值为整数。然后,我们使用方括号表示法向字典添加一个新的键值对 'Kavya': 58 −
marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("初始字典: ", marks)
marks['Kavya'] = 58
print ("添加新项后的字典: ", marks)
它将产生以下输出 −
初始字典: {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
添加新项后的字典: {'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49, 'Kavya': 58}
使用 update() 方法添加字典项
Python 字典中的 update() 方法用于将另一个字典或键值对的可迭代对象的内容合并到当前字典中。它添加或更新键值对,确保现有键用新值更新,并将新键添加到字典中。
你可以使用 update() 方法通过传递另一个字典或键值对的可迭代对象向字典添加多个项。
示例
在以下示例中,我们使用 update() 方法向字典 'marks' 添加多个新的键值对 'Kavya': 58 和 'Mohan': 98 −
marks = {"Savita":67, "Imtiaz":88}
print ("初始字典: ", marks)
marks.update({'Kavya': 58, 'Mohan': 98})
print ("添加新项后的字典: ", marks)
我们得到如下所示的输出 −
初始字典: {'Savita': 67, 'Imtiaz': 88}
添加新项后的字典: {'Savita': 67, 'Imtiaz': 88, 'Kavya': 58, 'Mohan': 98}
使用解包添加字典项
Python 中的解包是指从集合(如 list、tuple 或 dictionary)中提取单个元素,并在一行语句中将它们赋值给变量。这可以通过对可迭代对象(如 lists 和 tuples)使用 * 操作符,以及对 dictionaries 使用 ** 操作符来实现。
我们可以通过使用 ** 解包操作符组合两个或多个 dictionaries 来使用解包添加字典项。
示例
在下面的示例中,我们初始化了两个名为 "marks" 和 "marks1" 的 dictionaries,它们都包含姓名及其对应的整数值。然后,我们通过使用 dictionary 解包合并 "marks" 和 "marks1" 来创建一个新的 dictionary "newmarks" −
marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("marks dictionary before update: \n", marks)
marks1 = {"Sharad": 51, "Mushtaq": 61, "Laxman": 89}
newmarks = {**marks, **marks1}
print ("marks dictionary after update: \n", newmarks)
以上代码的输出如下 −
marks dictionary before update:
{'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
marks dictionary after update:
{'Savita': 67, 'Imtiaz': 88, 'Laxman': 89, 'David': 49, 'Sharad': 51, 'Mushtaq': 61}
使用联合操作符 (|) 添加字典项
Python 中的联合操作符,用 | 符号表示,用于将两个 set 的元素组合成一个新的 set,该 set 包含来自两个 set 的所有唯一元素。它也可以在 Python 3.9 及更高版本中与 dictionaries 一起使用,以合并两个 dictionaries 的内容。
我们可以通过将两个 dictionaries 合并成一个新的 dictionary 来使用联合操作符添加字典项,该新 dictionary 包含来自两个 dictionaries 的所有键值对。
示例
在这个示例中,我们使用 | 操作符组合 "marks" 和 "marks1" dictionaries,如果有重复键,则 "marks1" 的值优先 −
marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("marks dictionary before update: \n", marks)
marks1 = {"Sharad": 51, "Mushtaq": 61, "Laxman": 89}
newmarks = marks | marks1
print ("marks dictionary after update: \n", newmarks)
以上代码的输出如下所示 −
marks dictionary before update:
{'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
marks dictionary after update:
{'Savita': 67, 'Imtiaz': 88, 'Laxman': 89, 'David': 49, 'Sharad': 51, 'Mushtaq': 61}
使用 "|=" 操作符添加字典项
Python 中的 |= 操作符是 sets 和 dictionaries 的就地联合操作符。它使用来自右侧 set 或 dictionary 的元素更新左侧的 set 或 dictionary。
我们可以通过使用另一个 dictionary 中的键值对更新现有 dictionary 来使用 |= 操作符添加字典项。如果有重叠的键,右侧 dictionary 的值将覆盖左侧 dictionary 中的值。
示例
在以下示例中,我们使用 |= 操作符更新 "marks",使用来自 "marks1" 的键值对,如果有重复键,则 "marks1" 的值优先 −
marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}
print ("marks dictionary before update: \n", marks)
marks1 = {"Sharad": 51, "Mushtaq": 61, "Laxman": 89}
marks |= marks1
print ("marks dictionary after update: \n", marks)
产生的输出如下所示 −
marks dictionary before update:
{'Savita': 67, 'Imtiaz': 88, 'Laxman': 91, 'David': 49}
marks dictionary after update:
{'Savita': 67, 'Imtiaz': 88, 'Laxman': 89, 'David': 49, 'Sharad': 51, 'Mushtaq': 61}
使用 setdefault() 方法添加字典项
Python 中的 setdefault() 方法用于获取字典中指定键的值。如果键不存在,则插入该键及其指定的默认值。
我们可以通过指定键和默认值,使用 setdefault() 方法添加字典项。
示例
在这个示例中,我们使用 setdefault() 将键值对 "major": "Computer Science" 添加到 "student" 字典中 −
# 初始字典
student = {"name": "Alice", "age": 21}
# 添加新的键值对
major = student.setdefault("major", "Computer Science")
print(student)
由于键 "major" 不存在,因此它被添加,并使用指定的默认值,如以下输出所示 −
{'name': 'Alice', 'age': 21, 'major': 'Computer Science'}
使用 collections.defaultdict() 方法添加字典项
Python 中的 collections.defaultdict() 方法是内置 "dict" 类的子类,它为尚未设置的键创建带有默认值的字典。它是 Python 标准库中 collections 模块的一部分。
我们可以通过指定默认工厂函数,使用 collections.defaultdict() 方法添加字典项,该工厂函数决定了尚未设置键的默认值。当首次访问缺失的键时,会调用默认工厂函数来创建默认值,并将该值插入字典中。
示例
在这个示例中,我们使用不同的默认工厂函数初始化 defaultdict 实例:int 用于将缺失键初始化为 0,list 用于将缺失键初始化为空列表,以及自定义函数 default_value 用于将缺失键初始化为该函数的返回值 −
from collections import defaultdict
# 使用 int 作为默认工厂,将缺失键初始化为 0
d = defaultdict(int)
# 递增键 'a' 的值
d["a"] += 1
print(d)
# 使用 list 作为默认工厂,将缺失键初始化为空列表
d = defaultdict(list)
# 向键 'b' 的列表追加元素
d["b"].append(1)
print(d)
# 使用自定义函数作为默认工厂
def default_value():
return "N/A"
d = defaultdict(default_value)
print(d["c"])
得到的输出如下 −
defaultdict(<class 'int'>, {'a': 1})
defaultdict(<class 'list'>, {'b': [1]})
N/A