合并两个层次结构字典(Python3)

时间:2019-02-22 21:46:29

标签: python-3.x dictionary hierarchy

我需要将两个层次结构字典合并为一个。词典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

1 个答案:

答案 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'}]}