【发布时间】:2021-04-26 22:54:59
【问题描述】:
给定一个字典列表如下:
[{'id': '1', 'parents': []},
{'id': '2', 'parents': ['1']},
{'id': '3', 'parents': ['1', '2']},
{'id': '4', 'parents': ['3']},
{'id': '5', 'parents': ['1', '2', '3', '4']},
{'id': '6', 'parents': ['4', '5']},
{'id': '7', 'parents': ['4']},
{'id': '8', 'parents': []},
{'id': '9', 'parents': ['1', '8']},
{'id': '10', 'parents': ['8']},
{'id': '11', 'parents': ['5', '6']}]
我想构建一个函数,以递归方式结束所有元素的所有父元素。
例如元素 11 有两个父元素 5 和 6,它们也分别有 ['1', '2', '3', '4'] 和 ['4','5'] 也有.. .. 所以在这种情况下 11 的总父母是 [1,2,3,4,5,6]
我是这样开始的:
def total_parents(parentlist,tree):
if parentlist == []:
return
total = []
for parent in parentlist:
total.append(next((element['parents'] for element in tree if element['id'] == parent), None))
total_flatten = [item for sublist in total for item in sublist]
total_flatten_set = list(set(total_flatten))
return total_parents(total_flatten_set,tree)
for claim in tree:
claim['total_parents'] = total_parents(claim['parents'],tree)
这根本不起作用。在玩了很多代码并查看了一些递归问题之后:How to recursively generate a list of parent-child strings from an Adjacency List?
【问题讨论】:
-
/questions/8673482/transitive-closure-python-tuples 有帮助吗?了解
transitive closure这个词有帮助吗?
标签: python recursion tree parent-child