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

Combine two hierarchy dictionaries (Python3)

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

我认为这段代码应该return你需要什么:

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