Swift4中合并嵌套字典:请求合并三个指定字典的实现方案
合并嵌套字典的实现方法
这是个很常见的嵌套字典合并需求,我给你两种实用的实现方式,既能满足你当前的两层嵌套场景,也能适配更深层级的字典合并。
首先先明确你的三个输入字典:
dict1 = {"Abc": {"Def": {"Jkl": "xxx"}}} dict2 = {"Abc": {"Ghi": {"Mno": "yyy"}}} dict3 = {"Abc": {"Ghi": {"Pqr": "zzz"}}}
方法一:通用递归合并函数
这种方法是我平时处理这类需求最常用的,不管嵌套字典有多少层,都能自动合并同层级的键值对,灵活性拉满。核心思路是遍历每个字典的键,如果键已经存在且对应的值都是字典,就递归合并这两个子字典;否则直接赋值。
def merge_nested_dicts(*dicts): merged = {} for current_dict in dicts: for key, value in current_dict.items(): if key in merged: # 若当前值和已存在的值都是字典,递归合并子字典 if isinstance(merged[key], dict) and isinstance(value, dict): merged[key] = merge_nested_dicts(merged[key], value) else: # 若类型不同,这里可以根据需求调整逻辑,比如覆盖原有值或者抛出提示 # 你的场景里都是嵌套字典,所以这个分支大概率不会触发 merged[key] = value else: merged[key] = value return merged # 调用函数合并三个字典 merged_result = merge_nested_dicts(dict1, dict2, dict3) print(merged_result)
运行后会得到你期望的结果:
{'Abc': {'Def': {'Jkl': 'xxx'}, 'Ghi': {'Mno': 'yyy', 'Pqr': 'zzz'}}}
方法二:针对固定层级的手动合并(适合简单场景)
如果你的字典嵌套层级固定(比如只有两层),也可以直接手动处理,代码会更简洁,但扩展性差——如果后续字典层级变化,就得修改代码:
merged = {} # 先合并Abc下的所有子字典 abc_merged = {} # 整合dict1的Def abc_merged.update(dict1["Abc"]) # 整合dict2和dict3的Ghi,先取出dict2的Ghi,再用dict3的Ghi更新它 ghi_merged = dict2["Abc"]["Ghi"].copy() ghi_merged.update(dict3["Abc"]["Ghi"]) abc_merged["Ghi"] = ghi_merged merged["Abc"] = abc_merged print(merged)
内容的提问来源于stack exchange,提问作者Deepanshu
相关产品推荐
相关产品推荐

