私はMultiDiGraph
ですが、キーに基づいて区別されるノード間に複数のエッジが存在することがあります。グラフの中には多くのキーがあり、それらを繰り返して各キーのタスクを実行したいと思います。python networkx MultiDiGraphでエッジキーを取得または反復する方法
私はこれを扱うことができる1つの方法は、すべてのエッジを反復し、キーをセットに格納することです。
import networkx as nx
G = nx.MultiDiGraph()
G.add_edge('a', 'b', 1)
G.add_edge('a', 'b', 2)
G.add_edge('b', 'c', 1)
G.add_edge('c', 'a', 3)
# Iterate over edges in the map and store the keys
keys = set(e[2] for e in G.edges_iter(keys=True))
# Now do something for each key
for key in keys:
pass # do something
しかし、私は最終的に戻ってkeys
オーバー再度G
のエッジを反復し、することがありますので、これは、とても非効率です:それから私は、その集合の要素を反復処理することができるようになります。
は、私は道に沿って私のセットを構築することで、これは、より効率的に行うことができることを理解する:
keys = set()
for e in G.edges_iter(keys=True):
key = e[2]
if key in keys:
continue
keys.add(key)
# do something
しかし、私は本当に私はちょうど遭遇していないnetworkx
で特別な何か、またはいくつかのイディオムがあります願っていますこれをきちんとする。何か案は?それらにアクセスする唯一の方法は、データを反復処理であるので