You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用dict.update()合并任意数量字典的问题求解

问题根源

  • dict.update()是原地修改字典的方法,执行后返回None,你将该方法的返回值赋值给变量,自然会得到None的结果
  • 你第二版代码的循环中写的D.update(D)是让字典更新自身,完全没有实现多字典合并的逻辑,而且直接修改传入的原始字典也会产生不必要的副作用
  • 你最初的两参数版本属于错误写法歪打正着:将update的返回值赋值给first后first已经是None,你实际返回的是全局变量d1,刚好update修改了d1的内容才得到了正确输出,逻辑本身就不成立

修正后的代码

def d_update(*sequence):
    # 初始化空字典作为合并结果,避免修改传入的原始字典
    merged = {}
    for d in sequence:
        # 把当前遍历到的字典内容合并到结果字典中
        # 后续字典的同键名值会自动覆盖前面的,符合需求
        merged.update(d)
    return merged


# 测试用例
d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'a': 1, 'b': 2, 'c': 5}
d3 = {'b': 4, 'd': 6}
print(d_update(d1, d2, d3))  # 输出:{'a': 1, 'b': 4, 'c': 5, 'd': 6}

逻辑说明

  • 先创建一个独立的空字典merged用来存储合并结果,不会修改传入的任意原始字典
  • 遍历所有传入的字典参数,依次调用merged.update()把当前字典的键值对合并到merged中
  • 若出现重复键,后面遍历到的字典的值会自动覆盖前面的值,完全符合题目要求
  • 最后返回合并完成的merged即可

内容的提问来源于stack exchange,提问作者PreacherBaby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:21:00