Python - 给出三个不同的列表递归创建任意嵌套的dict

时间:2014-07-24 18:53:36

标签: python list recursion dictionary tree

假设我有三个列表:一个根列表,一个子列表(可以有子节点)和一个节点列表。在这些列表中的任何项目上,我可以调用使用属性.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)

因此,问题在于递归方法不会返回任何中间内容,只返回节点(没有子节点的子节点)。我错过了一些东西,需要一些帮助来弄清楚如何解决这个问题。

请记住,我是编程新手。

1 个答案:

答案 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 ....

的最小示例