Bir anahtar temelinde farklılaştırılmış düğümler arasında birden çok kenar olabileceği bir MultiDiGraph
var. Grafikte birçok anahtarım var ve bunların üzerinde yinelemek, her anahtar için bir görev yapmak istiyorum.Python ağ geçidindeki kenar anahtarları nasıl alınır veya yinelenir MultiDiGraph
Bununla başa çıkabileceğim bir yol, tüm kenarların üzerinde yineleme yapmak ve anahtarları bir kümede saklamaktır.
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
Ama bu daha sonra tekrar keys
üzerinde ben sonuçta G
kenarları boyunca ilerlerken olacaklarından, müthiş verimsiz görünüyor ve: Sonra o setin elemanları üzerinde ilerlerken mümkün olacak.
Ben yol boyunca Setimden inşa ederek bu daha verimli hale anlıyorum:
keys = set()
for e in G.edges_iter(keys=True):
key = e[2]
if key in keys:
continue
keys.add(key)
# do something
Ama gerçekten ben sadece rastlamak değil networkx
özel bir şey, ya da bazı deyim vardır umut ediyorum bunu düzgün yapmak için. Herhangi bir fikir? Onları erişmenin tek yolu veriler üzerinde yineleme tarafından yani