【发布时间】:2017-01-22 14:00:20
【问题描述】:
我有一个像这样的元组列表
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对节点进行排序,从叶节点到源节点,这可能只是问题 -
为什么不直接用 key = id 做一个字典。
-
您的目标结构有点不寻常。通常一个树节点有关于孩子而不是父母的信息。还有哪些信息与特定节点相关(因为它将在树/ dict 中)? 身份证? 姓名?但不是 number?
-
id 与每个节点相关
-
这个号码是干什么用的?
标签: python algorithm tree binary-search-tree