You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python递归生成依赖流扁平化列表的问题求助

Python递归生成依赖流扁平化列表的问题求助

我现在正尝试生成一个扁平化的依赖列表,输入的数据结构是这样的:

list_of_task_to_generate = [
    {"version": "1", "dependency": []},
    {"version": "2", "dependency": ["1"]},
    {"version": "3", "dependency": ["2"]},
    {"version": "4", "dependency": ["3"]},
    
    {"version": "5", "dependency": []},
    {"version": "6", "dependency": ["5"]},
]

我期望得到的输出是:每个版本作为键,对应的值是所有依赖它的后续版本(也就是所有间接或直接依赖当前版本的任务),具体如下:

desire_output = {
    "1": ["2", "3", "4"],
    "2": ["3", "4"],
    "3": ["4"],
    "4": [],
    
    "5": ["6"],
    "6": [],
}

这是我目前写的代码:

from pprint import pprint

list_of_task_to_generate = [
    {"version": "1", "dependency": []},
    {"version": "2", "dependency": ["1"]},
    {"version": "3", "dependency": ["2"]},
    {"version": "4", "dependency": ["3"]},
    
    {"version": "5", "dependency": []},
    {"version": "6", "dependency": ["5"]},
]


def generate_result_recursive(list_of_tasks):
    result = {}
    
    def add_dependencies(task):
        version = task["version"]
        dependencies = task["dependency"]
        
        if version not in result:
            result[version] = []
            
        for dep in dependencies:
            if dep not in result:
                result[dep] = []
            result[dep].append(version)
            
            # 尝试过循环查找
            for i in list_of_tasks:
                if i["version"] == dep:
                    add_dependencies(i)
            # 也尝试过用next的列表推导式
            # add_dependencies(next(t for t in list_of_tasks if t["version"] == dep))

                    
    for task in list_of_tasks:
        add_dependencies(task)
        
    return result

answer = generate_result_recursive(list_of_task_to_generate)
pprint(answer)

现在代码运行后得到的结果是这样的:

{
 '1': ['2', '2', '2'],
 '2': ['3', '3'],
 '3': ['4'],
 '4': [],

 '5': ['6'],
 '6': []
}

可以看到结果里出现了重复的元素,而且没有正确收集到间接依赖的版本。比如键"1"应该对应["2", "3", "4"],但现在却是["2", "2", "2"]。我绞尽脑汁也没找到问题所在,希望大家能帮我看看问题出在哪,谢谢啦 =)

备注:内容来源于stack exchange,提问作者pelos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:14:32