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

Python如何正确更新嵌套字典内的键值 避免新增冗余顶层键

问题原因

你使用的递归深度更新函数本身逻辑没有问题,错误来源于待更新的字典dict1结构和原字典的嵌套层级不匹配。
你要修改的set_params字段是嵌套在原字典的data_extraction节点下的,但你构造的dict1将set_params放在了最顶层,函数执行时找不到原字典顶层对应的set_params键,就会直接在顶层新增该键,自然不会修改到内层的目标字段。

解决方法

方法1:调整更新字典结构(推荐,保留递归合并能力)

把dict1的结构调整为和原字典的嵌套层级完全对齐,再调用原有更新函数即可:

# 调整后的更新字典,匹配原字典嵌套结构
dict1_fixed = {
    'data_extraction': {
        'set_params': {
            'START_DT': "'201001'",
            'END_DT': "'201004'"
        }
    }
}

# 调用你原来的更新函数
update(original, dict1_fixed)

这种方式的优势是支持局部字段合并,如果你只需要修改START_DT,不需要传入END_DT,原有字段值会保留不会被覆盖。

方法2:直接指定路径更新(适合已知明确嵌套路径的场景)

如果你确认要更新的路径固定,不需要通用的递归更新能力,直接赋值操作更简单:

场景A:合并更新set_params(保留原有未被覆盖的键)

original['data_extraction']['set_params'].update(dict1['set_params'])

场景B:完全替换整个set_params字典

original['data_extraction']['set_params'] = dict1['set_params']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 11:15:02