假设我有三个列表:一个根列表,一个子列表(可以有子节点)和一个节点列表。在这些列表中的任何项目上,我可以调用使用属性.children来获取其子项。
目标是构建一个任意嵌套的字典,如下所示:
{root_item: {child_item: {child_child_item: [node1, node2]}}}
到目前为止我的尝试 - 在一种方法中,我称之为递归方法:
structure = {}
for root in list_of_roots:
structure[root] = self._build_structure(root)
def _build_structure(self, item)
if item in list_of_nodes:
return item
else:
for child in item.children:
self._build_structure(child)
因此,问题在于递归方法不会返回任何中间内容,只返回节点(没有子节点的子节点)。我错过了一些东西,需要一些帮助来弄清楚如何解决这个问题。
请记住,我是编程新手。
答案 0 :(得分:0)
def _build_structure(self, item)
if item in list_of_nodes:
return item
else:
return [self._build_structure(child) for child in item.children]
您需要返回递归通话...如果您需要更多帮助,则需要发布list_of_nodes
....