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

如何合并复杂嵌套字典?嵌套字典合并方案求助

嵌套字典的递归合并方案

你遇到的问题很典型——普通的字典解包({**dict1, **dict2})只能处理顶层键的覆盖,没法递归合并深层嵌套的键值对。要解决多层嵌套字典的合并,我们需要写一个递归函数来逐层处理每个层级的内容。

常规合并:合并同层级键(推荐)

首先纠正一下你期望输出里的语法问题:你写的{'user':{'registration': {'flag': 'f'}}, {'url': 'www.example.com'}}不符合Python字典语法,user的值不能同时是两个并列的字典。正常的合并需求应该是让user字典同时包含registration和url两个键,最终结果像这样:

{'cm': {'fill': {'user': {'registration': {'flag': 'f'}, 'url': 'www.example.com'}}}}

实现这种合并的递归函数如下:

def merge_nested_dicts(dict_a, dict_b):
    # 先复制第一个字典,避免修改原数据
    merged_dict = dict_a.copy()
    for key, value in dict_b.items():
        # 如果当前键在两个字典中都存在,且对应的值都是字典,就递归合并
        if key in merged_dict and isinstance(merged_dict[key], dict) and isinstance(value, dict):
            merged_dict[key] = merge_nested_dicts(merged_dict[key], value)
        # 否则直接用第二个字典的值覆盖或添加
        else:
            merged_dict[key] = value
    return merged_dict

测试你的例子

把你的两个字典传入这个函数:

dict1 = {'cm': {'fill': {'user': {'registration': {'flag': 'f'}}}}}
dict2 = {'cm': {'fill': {'user': {'url': 'www.example.com'}}}}
dict3 = merge_nested_dicts(dict1, dict2)
print(dict3)

输出结果就是我们期望的合并后的嵌套字典,不管你的字典有多少层嵌套,这个函数都能逐层处理。

特殊需求:将同键值转为列表

如果你确实希望把同层级下的不同内容放到列表里(比如让user的值是包含两个字典的列表),可以调整函数逻辑:

def merge_dicts_to_list(dict_a, dict_b):
    merged_dict = dict_a.copy()
    for key, value in dict_b.items():
        if key in merged_dict:
            # 如果两边都是字典,转成列表
            if isinstance(merged_dict[key], dict) and isinstance(value, dict):
                merged_dict[key] = [merged_dict[key], value]
            # 如果已经是列表,直接追加
            elif isinstance(merged_dict[key], list):
                merged_dict[key].append(value)
            # 其他类型也转成列表
            else:
                merged_dict[key] = [merged_dict[key], value]
        else:
            merged_dict[key] = value
    return merged_dict

用这个函数处理你的例子,会得到:

{'cm': {'fill': {'user': [{'registration': {'flag': 'f'}}, {'url': 'www.example.com'}]}}}

不过这种场景比较少见,通常还是推荐第一种合并同层级键的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:46:35