-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