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

Python字典update合并报TypeError:unhashable type:'dict'错误

错误产生原因

Python字典的键有强制要求:必须是可哈希的不可变类型(比如字符串、数字、元组),可变类型(比如字典、列表)不能作为字典键使用,否则就会抛出TypeError: unhashable type: 'dict'错误。
你的代码存在两个核心问题:

  1. 传给d3.update()的参数是{d1:d2},相当于尝试把字典d1作为新构造字典的键,直接触发了上述类型错误。
  2. 循环逻辑完全偏离需求:就算不触发类型错误,这段代码也是反复把d1、d2整体作为键值对写入d3,根本不会把两个原字典里的姓名、成绩键值对拆分更新到d3里。
正确实现方案

根据你使用的Python版本,可以选下面任意一种写法实现合并:

  • 兼容所有Python版本的循环update写法,修正传参逻辑即可:
d1={"adam smith":"A","judy paxton":"B+"}
d2={"mary louis":"A","patrik white":"C"}
d3={}

for source_dict in (d1, d2):
    d3.update(source_dict) # 直接把遍历到的源字典传入update,自动合并所有键值对

print(d3)
# 输出:{'adam smith': 'A', 'judy paxton': 'B+', 'mary louis': 'A', 'patrik white': 'C'}
  • Python 3.5及以上版本支持的字典解包写法,代码更简洁:
d3 = {**d1, **d2}
  • Python 3.9及以上版本支持的字典合并运算符写法:
d3 = d1 | d2

注意:如果d1和d2存在同名键,合并时靠后的字典(d2)中的值会覆盖前面字典(d1)的对应值,这是字典更新的默认规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:18:35