-1
我正在努力解決遞歸合併問題。合併字典數組中的重複項
比方說,我有:
a=[{'name':"bob",
'age':10,
'email':"[email protected]",
'profile':{'id':1, 'role':"admin"}},
{'name':"bob",
'age':10,
'email':"other mail",
'profile':{'id':2, 'role':"dba"},
'home':"/home/bob"
}]
,我需要一些東西來遞歸合併條目。如果同一級別上的現有給定鍵的值不同,它會將該值附加到數組。
b = merge(a)
print b
{'name':"bob",
'age':10,
'email':["[email protected]","other mail"],
'profile':{'id':[1,2], 'role'=["admin", "dba"], 'home':"/home/bob"}
我寫了這個代碼:
def merge(items):
merged = {}
for item in items:
for key in item.keys():
if key in merged.keys():
if item[key] != merged[key]:
if not isinstance(merged[key], list):
merged[key] = [merged[key]]
if item[key] not in merged[key]:
merged[key].append(item[key])
else:
merged[key] = item[key]
return merged
輸出是:
{'age': 10,
'email': ['[email protected]', 'other mail'],
'home': '/home/bob',
'name': 'bob',
'profile': [{'id': 1, 'role': 'admin'}, {'id': 2, 'role': 'dba'}]}
這是不是我想要的。
我無法弄清楚如何處理遞歸。
謝謝:)
哪裏是你的代碼,究竟是它的問題? – jonrsharpe 2014-11-24 17:25:36
正如我所說,我正在努力與這一個... – CyrilPeponnet 2014-11-24 17:28:13
所以你有...什麼都沒有?這不是一個代碼寫入服務。 – jonrsharpe 2014-11-24 17:28:51