我搜索了一段时间来解决这个问题,但是所有的解决方案都假设可连接键位于字典的同一嵌套级别。你知道吗
简而言之,有两条格言:
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中位于树的第一层。字典可能对所有键/值都有重叠(在不同的级别,比如在'Eyes'案例中),或者根本没有重叠,但是我也需要避免重复。你知道吗
关键是,我会发现一本词典已经包含在另一本词典中,或者它们根本不会重叠。我正试图“修剪”一棵巨树,它只保留基于术语搜索(纯字符串搜索)的某些节点。问题是,一些节点(以及派生的、更深的节点)可能包括一些其他节点,但有时它们可能根本不重合。把它想象成你身体的树/嵌套字典。你可以搜索“细胞”,找到一个叫做“血细胞”的大节点,其中包括其他节点,如“凝血细胞”、“运输细胞”或“保护细胞”。此外,在主树的另一个分支中,您可能会发现“骨细胞”,例如。所有这些都将在搜索中检索,其中一些可能包括其他(“凝血”、“运输”或“保护性”将在“血细胞”内),但其他一些可能与树分离(“骨细胞”)。我希望它们在同一个全局嵌套树中。你知道吗
在这种情况下,如何合并几本词典?提前谢谢!你知道吗
如果您不知道它们相交的级别,则必须执行深度优先搜索树之类的操作,以确认dictionary 2不在dictionary 1中,然后在顶层添加它们。你知道吗
找到级别,然后执行字典合并。你知道吗
您可以使用一个简单的递归函数来更新字典(node:I将键值对添加到输入中的空字典中,以反映下面代码所做的实际更改):
输出:
相关问题 更多 >
编程相关推荐