2016-03-21 11 views
2

networkxを使用してグラフGを作成し、エッジ(1,2)を追加しました。不思議なことに、networkx内のグラフ内の一貫性のないエッジデータ

(1,2) in G.edges() == False 

しかし

G.has_edge(1,2) == True 

私はバッフル付きです。これは問題の簡潔な要約です。実際のグラフデータは大きく、ここでは完全には再現できません。

答えて

2

G.edges()には、各エッジが1回しかありません。これは無向グラフなので、(1,2)または(2,1)のいずれかになります(両方を表示したくない場合は、最初にエッジを繰り返して削除することができます)。どのような順序で実行されるのかは分かりません。なぜなら、それはPythonの辞書から来ているからです。それはdoes not have predictable orderです。 (1,2) in G.edges() or (2,1) in G.edges()を実行することはできますが、実際にはしたくない - エッジリストを作成することは効率的ではありません。

したがって、テストでは、正しくチェックする(さらに効率的に)G.has_edge(1,2)を使用する必要があります。 G = nx.Graph()において

[4]:


だけ異なるPythonの実装のための予測可能性の欠如を示すが、これは私が[3]で

を得るものです[5]でG.add_edge(1,2)

:G.edges()

OUT [5]:[(1、2)]

[7]における真

:G.edgesにおける(1,2)()

OUT [6]:G.add_edge(4,3)

[6]において

[8]:G.edges()

OUT [8]:[(1,2)、(3,4)]で

[9]:(4,3)G.edgesに( )

Out [9]:False

関連する問題