将根从嵌套字典返回到特定的叶

2024-10-08 21:22:15 发布

您现在位置:Python中文网/ 问答频道 /正文

嵌套字典树的形式是

categories = [{
    'name': 'Cat1',
    'children': [{
        'name': 'SubCat1',
        'children': [{
            'name': 'SubSubCat1',
            'children': []
         }]
     }]
}, {
    'name': 'Cat2',
    'children': []
}]

递归函数应该返回从根到特定叶的路径。在

假设,function(categories, 'SubCat1')应该返回一个包含['Cat1', 'SubCat1']的列表。同样,for function(categories, 'Cat2')应该返回['Cat2']。在

迄今取得的进展

^{pr2}$

Tags: name路径列表for字典function形式categories
1条回答
网友
1楼 · 发布于 2024-10-08 21:22:15

不要传递一个列表;它会累积所有搜索到的路径,而不仅仅是匹配的路径。通过连接,在递归时建立列表。您还需要处理递归调用的结果;您的代码将忽略该结果。在

下面的工作,请注意,当我们递归(在if category['children'])时,代码必须检查是否在该子树中找到路径:

def recurse_category(categories, to_find):
    for category in categories:
        if category['name'] == to_find:
            return True, [category['name']]
        if category['children']:
            found, path = recurse_category(category['children'], to_find)
            if found:
                return True, [category['name']] + path
    return False, []

这将返回布尔值(如果找到,则返回true)和路径:

^{pr2}$

相关问题 更多 >

    热门问题