{255:
{255:
{1:
{2:{}
}
}
}
},
{255:
{255:
{2:
{3:{}
}
}
}
}我的字典非常复杂(比上面显示的词条还要多)
现在我想合并两个字典
输出应为:
{255:
{255:
{1:
{2:{}
}
},
{2:
{3:{}
}
}
}此外,最大嵌套可能是到5级。
发布于 2014-09-25 16:06:44
不知道我是否理解了,但是这样如何:
def merge(a, b):
for x in b:
if x in a:
merge(a[x], b[x])
else:
a[x] = b[x]
return a发布于 2014-09-25 16:24:46
下面是对格奥尔格答案的一个简单变体,它不会影响任何一个参数值(它返回新字典中数据的副本,而不是重用现有字典):
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额外的参数用于使代码在第一次调用时复制第一个字典,而不是在任何递归调用中复制(因为那时它们已经被复制了)。这是一个实现细节,当从其他代码调用它时,您将始终使用默认值。
https://stackoverflow.com/questions/26033350
复制相似问题