1

私が持っているもの:networkXのマルチグラフH。2 つのノード '0' と '1'。既存のエッジ e1=(0,1)。

私が欲しいもの:ノード0と1の間に2番目の新しいエッジe2を追加します。

問題: 0 と 1 の間に新しいエッジ e2 を追加すると、e1 は e2 の新しい値 (属性) で更新され、e2 は追加されません。0 と 1 の間には常に 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

ご覧のとおり、2 番目のエッジは最初のエッジを更新していますが、e2 は e1 とは異なる特定のキーで追加されています (デフォルトは 0)。

どうすればこの問題を回避できますか?? エッジ 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 に答える