{255:
{255:
{1:
{2:{}
}
}
}
},
{255:
{255:
{2:
{3:{}
}
}
}
}
我的词典非常复杂(比上面显示的条目更多)
现在我要合并两个词典
输出应该是: {255:
{255:
{1:
{2:{}
}
},
{2:
{3:{}
}
}
}
最大嵌套也可能是5级。
答案 0 :(得分:2)
不确定我是否理解,但是如何:
def merge(a, b):
for x in b:
if x in a:
merge(a[x], b[x])
else:
a[x] = b[x]
return a
答案 1 :(得分:1)
以下是georg答案的一个简单变体,它不会破坏任何一个参数值(它会返回新词典中的数据副本,而不是重用现有的数据):
import copy
def merge(a, b, copy_a=True):
if copy_a:
a = copy.deepcopy(a)
for x in b:
if x in a:
merge(a[x], b[x], copy_a=False)
else:
a[x] = copy.deepcopy(b[x])
return a
额外参数用于使代码在第一次调用时复制第一个字典,但不在任何递归调用上复制(因为它们已经被复制了)。这是一个实现细节,当你从其他代码调用它时,你总是会使用默认值。