如何在两个节点之间添加第二条新边来更新旧边

问题描述 投票:1回答:1

我有什么:networkX中的多重图形H。两个节点“ 0”和“ 1”。现有边e1 =(0,1)。

我想要什么:在节点0和1之间添加第二条新边e2。

问题:当我在0和1之间添加新的边e2时,会更新e1,同时更新e2的新值(属性),而不会添加e2。总是在0和1之间有一个边]

我的示例代码:

H=nx.MultiGraph()
H=nx.read_gml('my_graph.gml')

如果我打印H的所有边缘,我将正确地拥有此:

for i in H.edges(data=True):
    print i
    >>>>>(0, 1, {})   #this is ok 

现在我使用key属性将新边添加到e2 =(0,1):

H.add_edge(0,1,key=1,value='blue')

但是如果我打印H的所有边缘:

for i in H.edges(data=True):
    print i
    >>>>>(0, 1, {'key': 1, 'value': 'blue'})  #this is error e1 was updated instead add of e2

您可以看到,第二个边缘更新了第一个边缘,但是e2用指定的密钥添加,形式不同于e1(默认为0)。

如何避免这个问题?我想要这个结果在添加边缘e2之后:

for i in H.edges(data=True):
    print i
    >>>>>(0: 0, 1, {}, 1: 0,1,{'value': 'blue'} )  #this is correct 
graph add networkx graph-theory edge-list
1个回答
2
投票

您没有多重图形,因此您要替换边而不是添加新边。使用

H=nx.MultiGraph(nx.read_gml('my_graph.gml'))
© www.soinside.com 2019 - 2024. All rights reserved.