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

如何更新不同层级嵌套字典中指定子字典的所有实例

批量更新嵌套字典中指定子字典的方法

先看你的目标场景:

dictionary1 = {
    "level11": {
        "level12": {"levelA": 0, "levelB": 1}
    },
    "level21": {
        "level22": {
              "level23": {"levelA": 0, "levelB": 1},
         }
    }
}

需要把所有和{"levelA": 0, "levelB": 1}完全匹配的子字典,替换成{"levelA": 2, "levelB": 3}。

可以用递归遍历的方式实现,不管字典嵌套多深,都能找到所有符合条件的子字典并替换:

def update_nested_dict(d, target, replacement):
    # 遍历字典的每个键值对
    for key, value in d.items():
        if isinstance(value, dict):
            # 如果值是字典,递归处理子层级
            update_nested_dict(value, target, replacement)
            # 递归后检查当前层级的字典是否匹配目标
            if value == target:
                d[key] = replacement
        else:
            # 非字典类型直接跳过
            continue

# 定义目标字典和替换用的新字典
target_dict = {"levelA": 0, "levelB": 1}
new_dict = {"levelA": 2, "levelB": 3}

# 调用函数更新原字典
update_nested_dict(dictionary1, target_dict, new_dict)

# 输出验证结果
print(dictionary1)

代码说明

  • 递归函数会逐层深入嵌套结构,覆盖所有层级的字典
  • 先递归处理子字典,再检查当前层级的字典是否匹配目标,避免遗漏任何层级的匹配项
  • 只有和目标字典完全一致的子字典才会被替换,不会误改其他结构

运行后原字典会更新为:

{
    "level11": {
        "level12": {"levelA": 2, "levelB": 3}
    },
    "level21": {
        "level22": {
              "level23": {"levelA": 2, "levelB": 3},
         }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:12:07