【发布时间】:2018-09-14 08:35:52
【问题描述】:
我搜索了这个问题的解决方案一段时间,但所有解决方案都假定可连接键位于字典的同一嵌套级别。
简而言之,有这两个字典:
dict1 = {'Head':
{'Face':
{'Eyes':
{'Eyebrows': {},
'Eyelids':
{'Eyelashes': {}
}
},
'Nose': {},
'Mouth': {}
}
}
}
dict2 = {'Eyes':
{'Eyebrows': {},
'Eyelids':
{'Eyelashes': {}
}
}
}
我想要以下:
dict3 = {'Head':
{'Face':
{'Eyes':
{'Eyebrows': {},
'Eyelids':
{'Eyelashes': {}
}
},
'Nose': {},
'Mouth': {}
}
}
}
如你所见,关键“眼睛”应该是这个小例子中的合并点,它在 dict1 中树的第三级和 dict2 中的第一级。字典可能对所有键/值都有重叠(在不同级别,例如在“眼睛”的情况下),或者根本没有重叠,但我也需要避免重复。
关键是,我会发现其中一个字典已经包含在另一个字典中,或者它们根本不会重叠。我正在尝试“修剪”一棵仅保留基于术语搜索(纯字符串搜索)的某些节点的巨型树。问题是一些节点(以及派生的、更深的节点)可能包括其他一些节点,但有时它们可能根本不重合。把它想象成你身体的树/嵌套字典。您可以搜索“细胞”,找到一个名为“血细胞”的大节点,其中包括“凝血细胞”、“运输细胞”或“保护细胞”等其他节点。此外,例如,在主树的另一个分支中,您可能会找到“骨细胞”。所有这些都将在搜索中被检索到,其中一些可能包括其他(“凝血”、“运输”或“保护”将在“血细胞”内),但其他一些可能与该树分开(“骨细胞” )。我希望它们位于同一个全局嵌套树中。
在这种情况下如何合并多个字典?提前致谢!
【问题讨论】:
-
dict1与dict3之间没有前后差异 - 这使它成为一个不太好的例子。你试图合并你的数据(How to create a Minimal, Complete, and Verifiable example)是什么?另外:请提供真实数据。 -
@PatrickArtner 你是对的,这不是一个很好的例子,实际上我在写这个问题时遇到了一些麻烦,这很棘手。我更新了我的帖子,大致了解了我想要做什么,也许这比专注于示例更容易理解。
标签: python dictionary merge nested