我有什么: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
您没有多重图形,因此您要替换边而不是添加新边。使用
H=nx.MultiGraph(nx.read_gml('my_graph.gml'))