Python - 递归创建任意嵌套字典,给定三个不同的列表

0 投票
1 回答
2467 浏览
提问于 2025-04-18 14:39

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

撰写回答