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')

如果我正确打印 HI 的所有边缘,则有:

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)。

我怎样才能避免这个问题? 添加edge e2后我想要这个结果:

for i in H.edges(data=True):
    print i
    >>>>>(0: 0, 1, {}, 1: 0,1,{'value': 'blue'} )  #this is correct 
4

1 回答 1

2

您没有多重图,因此您正在替换边缘而不是添加新边缘。利用

H=nx.MultiGraph(nx.read_gml('my_graph.gml'))
于 2014-11-07T17:10:13.973 回答