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

如何在第二层for循环中更新字典,合并嵌套字典非字典值

问题解决:嵌套字典的键值累加

给定嵌套字典:

dic={"a":1,
   "b":5,
   "c":{"a":3,"c":-5,"d":{"a":1,"b":3}}}

期望输出:

{"a":5,"b":8,"c":-5,"d":0}

你的现有代码存在三个核心问题:

  • 仅处理了两层嵌套,遗漏了更深层级的键值对(比如d对应的字典里的a和b)
  • 拆分了d和d2两个字典,没有实现统一累加逻辑
  • 未处理「仅作为字典键存在、无对应数值」的键(比如d)

修正后的实现代码

使用递归遍历所有层级的嵌套结构,统一在一个字典中完成累加:

def accumulate_nested_keys(nested_dict):
    result = {}
    
    def traverse(current_dict):
        for key, value in current_dict.items():
            if isinstance(value, dict):
                # 递归处理嵌套字典
                traverse(value)
                # 若当前键未在结果中,初始化为0(仅作为字典键存在的情况)
                if key not in result:
                    result[key] = 0
            else:
                # 累加数值型值
                if key in result:
                    result[key] += value
                else:
                    result[key] = value
    
    traverse(nested_dict)
    return result

# 测试
dic={"a":1,
   "b":5,
   "c":{"a":3,"c":-5,"d":{"a":1,"b":3}}}
print(accumulate_nested_keys(dic))

代码逻辑说明

  1. 递归遍历:通过内部函数traverse递归处理所有层级的嵌套字典,确保不会遗漏任何键值对
  2. 数值累加:遇到非字典类型的值时,直接在结果字典中对对应键的值进行累加
  3. 字典键初始化:遇到值为字典的键时,先递归处理其内部内容,再检查该键是否已在结果中,未存在则初始化为0(对应d的情况)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:00:51