我正在使用一个图表,该图表具有树结构。我试图将图形的一组边缘映射到父子关系。我使用python字典来存储关系。让我举一个例子来说明。假设我有一个包含5个节点的图形,边缘给出的是:
2 1
3 1
4 2
5 2
代码:
paths = {}
n = int(raw_input()) ##number of nodes
j = 1
while j < n:
u, v = raw_input().split(" ")
paths[int(v)] = int(u)
j += 1
所以我的字典是{2:1, 3:1, 4:2, 5:2}
。
但如果以相反的顺序给出边缘,代码将失败:
1 2
1 3
2 4
2 5
在这种情况下,我的字典将是{1:3, 2:5}
,我错过了两个边缘。
如何让代码更健壮?
编辑:对于每个边缘,我需要能够告诉哪个节点是子节点,哪个节点是父节点
答案 0 :(得分:0)
以下列方式使用字典:。
paths[int(v)] = int(u)
您只需重新分配键所指向的值,而不是将其添加到列表中。
如果我理解正确,您应该使用以下内容:
paths = []
n = int(raw_input()) ##number of nodes
j = 1
while j < n:
u, v = raw_input().split(" ")
paths.append(int(u), int(v))
j += 1
至少不依赖于输入顺序。