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

Python:实现嵌套字典的深度更新函数

嵌套字典的深度更新实现

给定一个嵌套字典my_dict和另一个嵌套字典update,update包含一系列my_dict中已有的有效键,用于为对应路径的叶子节点赋值,示例如下:

my_dict = {
    'city': 'NYC',
    'person1': {'age': 25, 'name': 'Anna'},
    'person2': {'age': 30, 'name': 'Bob'}
}

update0 = {'city': 'London'}
update1 = {'person1': {'age': 24}}
update2 = {'person2': {'age': 31}}

需要实现一个UpdateDict函数,使得调用UpdateDict(my_dict, update1)后,仅更新person1的age值,同时保留name键,返回结果如下:

{
    'city': 'NYC',
    'person1': {'age': 24, 'name': 'Anna'},
    'person2': {'age': 30, 'name': 'Bob'}
}

调用UpdateDict(my_dict, update0)则返回更新city值的字典:

{
    'city': 'London',
    'person1': {'age': 25, 'name': 'Anna'},
    'person2': {'age': 30, 'name': 'Bob'}
}

在C++中可以通过显式指针或引用操作子字典,但Python中因为不知道update的嵌套深度,初期很难处理。尝试使用{**my_dict, **update1}或者my_dict.update(update1)这类方法时,会直接替换整个子字典,导致同层级的其他键丢失,不符合需求。最终可以通过递归方法解决,代码如下:

def UpdateDict(original, param):
    for key in param.keys():
        if type(param[key]) == dict:
            UpdateDict(original[key], param[key])
        else:
            original[key] = param[key]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:18:28