Python - 递归创建任意嵌套字典,给定三个不同的列表
假设我有三个列表:一个是根节点的列表,一个是子节点的列表(这些子节点也可以有自己的子节点),还有一个是节点的列表。在这些列表中的任何一个项目上,我都可以使用一个属性.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
是什么...