如何将离散的节点ID更改为连续的ID?

时间:2018-12-10 01:12:41

标签: python

我有一个图,其中节点的ID是离散的。有什么方法可以使这些id连续,同时保持原始节点之间的关系? 例如,我有一个具有6个节点和3个边的图:1-> 2、6-> 9、8-> 7 如何使节点ID连续,这样我就可以得到具有如下边缘的图:1-> 2、3-> 6、5-> 4,其中“ 3”表示“ 6”,“ 4”表示“ 7” ,等等。

1 个答案:

答案 0 :(得分:0)

假设您有list条边(tuples),可以对连续ID使用defaultdict技巧:

from collections import defaultdict

edges = [(1, 2), (6, 9), (8, 7), (6, 7), (9, 1)]

d = defaultdict(lambda: len(d) + 1)
id_edges = [(d[x], d[y]) for x, y in edges]
# [(1, 2), (3, 4), (5, 6), (3, 6), (4, 1)]

或者从0开始:

d = defaultdict(lambda: len(d))
id_edges = [(d[x], d[y]) for x, y in edges]
[(0, 1), (2, 3), (4, 5), (2, 5), (3, 0)]