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)
# trying loop
for i in list_of_tasks:
if i["version"] == dep:
add_dependencies(i)
# or this list comprehencion with 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)
генерируется код, предоставляющий нужное количество зависимостей
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)
# trying loop for i in list_of_tasks: if i["version"] == dep: add_dependencies(i) # or this list comprehencion with next # add_dependencies(next(t for t in list_of_tasks if t["version"] == dep))
'5': ['6'], '6': [] } [/code] но я ломаю голову, пытаясь понять, почему не захватывается зависимость Next, например: первый элемент должен дать [code]'1':['2', '3', '4'] [/code] Я ценю помощь, ребята =)