我有一个类似的元组列表
list_of_tuples = [(number, name, id, parent_id),
(number, name, id, parent_id),
]
我正在尝试将它按顺序结构排列,例如:
{
parent: [(id, name), (id, name)],
parent: {parent: [(id, name)]
{
因此,任何节点都可以有父节点和/或子节点。
我尝试过:
tree = defaultdict(lambda: [None, ()])
ancestors = set([item[3] for item in list_of_tuples])
for items in list_of_tuples:
children_root = {}
descendants = []
number, name, id, parent = items
if parent is None:
tree[id] = [(id, name)]
elif parent:
if parent not in tree.keys():
node = tree.get(parent)
node.append((id, name))
children = (id, name)
tree[parent].append(children)
如果一个节点同时有父节点和子节点,那么我会丢失深层次的层级关系。
如何使排序正确工作?
parent_id
对节点进行排序,并从叶节点开始向源节点移动,这可能会简化问题。 - Moses Koledoye