分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​​​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 的键必须是字符串

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐