Python-将一个字典的键值对更新到另一个字典中
·
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程
https://www.captainai.net/troubleshooter
在 Python 中,将一个字典的键值对更新到另一个字典中有多种方法:
一、update() 方法(最常用)
# 基本用法:将 dict2 更新到 dict1
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict1.update(dict2)
print(dict1) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print(dict2) # {'c': 3, 'd': 4}(不变)
覆盖行为(相同键会被覆盖)
dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'b': 100, 'd': 4}
dict1.update(dict2)
print(dict1) # {'a': 1, 'b': 100, 'c': 3, 'd': 4}
# 注意:'b' 的值被 dict2 覆盖了
更新多个键值对
dict1 = {'a': 1}
dict1.update(b=2, c=3) # 关键字参数形式
print(dict1) # {'a': 1, 'b': 2, 'c': 3}
二、使用 | 运算符(Python 3.9+)
# 创建新字典,不修改原字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict3 = dict1 | dict2
print(dict3) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print(dict1) # {'a': 1, 'b': 2}(未改变)
# 相同键的处理(右侧覆盖左侧)
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 100, 'c': 3}
dict3 = dict1 | dict2
print(dict3) # {'a': 1, 'b': 100, 'c': 3}
原地更新运算符 |=
# 相当于 update(),会修改原字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict1 |= dict2
print(dict1) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
三、使用解包 **(Python 3.5+)
# 创建新字典
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict3 = {**dict1, **dict2}
print(dict3) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 相同键:后面的覆盖前面的
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 100, 'c': 3}
dict3 = {**dict1, **dict2}
print(dict3) # {'a': 1, 'b': 100, 'c': 3}
四、字典推导式(需要条件更新时)
# 只更新某些满足条件的键
dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict2 = {'b': 20, 'c': 30, 'e': 50}
# 只更新 dict2 中值大于 25 的键
dict1.update({k: v for k, v in dict2.items() if v > 25})
print(dict1) # {'a': 1, 'b': 2, 'c': 30, 'd': 4, 'e': 50}
五、collections.ChainMap(合并多个字典视图)
from collections import ChainMap
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
# 创建视图,不复制数据
merged = ChainMap(dict1, dict2)
print(dict(merged)) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 查找时按顺序查找
print(merged['a']) # 1(来自 dict1)
# 修改会影响到第一个字典
merged['a'] = 100
print(dict1) # {'a': 100, 'b': 2}
六、方法对比总结
# 示例数据
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
dict3 = {'b': 100, 'e': 5}
# 1. update() - 修改原字典
dict1.update(dict2) # dict1 被修改
# 2. | 运算符 - 创建新字典(Python 3.9+)
new_dict = dict1 | dict2 # dict1 不变
# 3. 解包 - 创建新字典(Python 3.5+)
new_dict = {**dict1, **dict2} # dict1 不变
# 4. 拷贝后更新
new_dict = dict1.copy()
new_dict.update(dict2)
# 5. dict() 构造函数
new_dict = dict(dict1, **dict2) # 注意:dict2 的键必须是字符串
更多推荐




所有评论(0)