Python 3.x python中是否有用于合并两个嵌套字典值的代码?
我有嵌套字典,希望得到合并的值Python 3.x python中是否有用于合并两个嵌套字典值的代码?,python-3.x,Python 3.x,我有嵌套字典,希望得到合并的值 d1=dict() d2=dict() d1 = {1: {'x1':('y1')}, 2: 'y1'} d2 = {1: {'x1':('y3')}, 2: 'y2'} 我希望得到以下结果: 'x1':('y1','y3') ('y1','y2') 但是要找到结果 ({'x1': 'y1'}, {'x1': 'y3'}) ('y1', 'y2') 如何获得预期的结果?您可以通过在合并时检查值(如果值是嵌套字典)来实现此目的。使用对相同函数的重复调用
d1=dict()
d2=dict()
d1 = {1: {'x1':('y1')}, 2: 'y1'}
d2 = {1: {'x1':('y3')}, 2: 'y2'}
我希望得到以下结果:
'x1':('y1','y3') ('y1','y2')
但是要找到结果
({'x1': 'y1'}, {'x1': 'y3'}) ('y1', 'y2')
如何获得预期的结果?您可以通过在合并时检查值(如果值是嵌套字典)来实现此目的。使用对相同函数的重复调用合并它们,如下所示:
mergeTwoDic(d1[key],d2[key]) if isinstance(d1[key],dict) and isinstance(d2[key],dict) else (d1[key],d2[key])
所以最终的解决方案如下
d1=dict()
d2=dict()
d1 = {1: {'x1':('y1')}, 2: 'y1'}
d2 = {1: {'x1':('y3')}, 2: 'y2'}
def mergeTwoDic (d1,d2):
result = {};
for key in d1.keys() | d2.keys():
if key in d1 and key in d2:
result[key] = mergeTwoDic(d1[key],d2[key]) if isinstance(d1[key],dict) and isinstance(d2[key],dict) else (d1[key],d2[key])
else:
result[key] = d1.get(key) or d2.get(key)
return result
print(mergeTwoDic(d1,d2).values())
输出:
[{'x1': ('y1', 'y3')}, ('y1', 'y2')]
请注意,正如您所写,所需的输出不是有效的python格式。它应该是
[{'x1':('y1','y3')},('y1','y2')]
或者({'x1':('y1','y3')},('y1','y2'))
或者可能是{'x1':('y1','y3'),2:('y1','y2')