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

合并n级多维字典:使用字典推导式合并二级字典值的问题

解决嵌套字典合并的问题

嘿,我来帮你搞定这个字典合并的问题!

你遇到的NameError是因为循环顺序搞反了——在你的推导式里,你先尝试遍历tmp.items(),但这时候tmp还没被定义呢!Python处理字典推导式里的循环是按从左到右的顺序来的,得先拿到每个二级字典,再去拆解它的键值对。

正确的字典推导式方案

直接调整循环顺序就可以解决:

foo = {1: {'f1': 'c1'}, 2: {'f2': 'c2'}}
bar = {k: v for tmp_dict in foo.values() for k, v in tmp_dict.items()}
print(bar)  # 输出: {'f1': 'c1', 'f2': 'c2'}

这里的逻辑是:

  1. 先遍历foo.values(),拿到每一个二级字典(比如{'f1': 'c1'}和{'f2': 'c2'})
  2. 再遍历每个二级字典的键值对,把它们逐一添加到新字典bar里

另一种更直观的非推导式方法

如果觉得推导式有点绕,用普通的循环+update()方法也很简单:

bar = {}
for sub_dict in foo.values():
    bar.update(sub_dict)

update()方法会直接把一个字典的键值对合并到另一个字典里,效果和推导式完全一样。

⚠️ 注意:如果你的二级字典里有重复的键,后面的键值会覆盖前面的(这是字典的默认特性,不管用哪种方法都会这样)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:53:16