向图表添加新节点是否会更改旧节点的索引?

时间:2014-09-17 16:58:10

标签: python networkx

我有一个networkx图表对象G。每个节点都有一个相对于G.nodes()的索引。我跟踪节点索引,因为我使用邻接矩阵进行一些计算,因为在adjecency矩阵中的每个行索引对应于G.nodes()中的节点索引。但现在我想在图表中添加新节点,是否会改变旧节点的索引?

我没有删除任何节点。

G = nx.Graph()

#add some nodes to G.

#record the indices of those nodes in a dictionary that maps from a node name to a node index from the list G.nodes()

#add more nodes and edges to G.

#Did the indices of the old nodes change?

1 个答案:

答案 0 :(得分:2)

NetworkX将图节点存储在类node的属性Graph中。由于node是字典,因此订单无法保证并且可能会更改。

如果您可以提供有关您尝试实现的更多详情,我们可以为您提供更多帮助。您可以尝试保持从节点到名称的字典映射,或者如果您只需要节点名称,您还可以直接为节点分配名称:

G.add_node('John')
G.add_node('Jane')

您还可以使用节点属性,例如

G.add_node(0, name='John', age=24)
G.add_node(1, name='Jane', age=27)

然后将其视为

G.node[0]
>>> {'name': 'John', 'age': 24}

您还可以将任意对象用作图节点。