{255:
{255:
{1:
{2:{}
}
}
}
},
{255:
{255:
{2:
{3:{}
}
}
}
}
我的字典非常复杂(甚至比上面显示的条目更多(
现在我想合并两个词典
输出应为:
{255:
{255:
{1:
{2:{}
}
},
{2:
{3:{}
}
}
}
此外,最大嵌套可能达到 5 级。
不确定我是否理解,但是这个怎么样:
def merge(a, b):
for x in b:
if x in a:
merge(a[x], b[x])
else:
a[x] = b[x]
return a
以下是 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
额外的参数用于使代码在第一次调用时复制第一个字典,但不在任何递归调用上复制(因为那时它们已经被复制了(。这是一个实现细节,从其他代码调用它时,你将始终使用默认值。