我需要将两个层次结构字典合并为一个。词典a和b仅共享一个公共根节点(例如,组织的首席执行官),否则它们之间没有重叠(例如,下面的a和b是两个独立的业务部门)。
a = {'parent': '', 'name': 'CEO', 'children': [{'parent': 'CEO', 'name': 'Dir1'}]}
b = {'parent': '', 'name': 'CEO', 'children': [{'parent': 'CEO', 'name': 'Dir2'}]}
这是组合字典的外观,但是如何?
{'parent': '', 'name': 'CEO', 'children': [{'parent': 'CEO', 'name': 'Dir1'},{'parent': 'CEO', 'name': 'Dir2'}]}
我尝试过
def Merge(dict1, dict2):
return(dict2.update(dict1))
def Merge(dict1, dict2):
res = {**dict1, **dict2}
return res
...但是由于我所假设的字典的层级性质,这两个方法都不起作用。我也尝试过,但没有成功:SO link
答案 0 :(得分:2)
我认为这段代码应该返回您需要的内容:
a = {'parent': '', 'name': 'CEO', 'children': [{'parent': 'CEO', 'name': 'Dir1'}]}
b = {'parent': '', 'name': 'CEO', 'children': [{'parent': 'CEO', 'name': 'Dir2'}]}
def Merge(dictionaries):
children = []
for d in dictionaries:
children = children + d['children']
return children
children = Merge([a,b])
new_dictionary = {'parent': '', 'name': 'CEO', 'chilren': children}
print(new_dictionary)
这将为您提供:
{'parent': '', 'name': 'CEO', 'chilren': [{'parent': 'CEO', 'name': 'Dir1'}, {'parent': 'CEO', 'name': 'Dir2'}]}