2012-02-27 17 views
8

her çağrı için * add_edge (a, b, ağırlık = 1) * bir ve b düğümler arasında yeni bir kenar katacak ilişkilendirir. Grafiği oluştururken, ve b yeniden bulunduğunda bu ağırlığı değiştirmek mümkündür. Şu anda (a, b) veya (b, a) 'nın bağlı olup olmadığını kontrol etmek için bir kontrol yapıyorum, daha sonra kenarını silin ve yeni bir tane ekleyin. Bana sadece kilomuzu güncelleyebilmem gerektiğini düşünüyorum.değiştirme kenarı ufak matbaa olarak networkx ufak matbaa

Not: Ben (anahtar kullanarak farklılaşmış) düğümler arasındaki kenarları farklı kullandıkları için

cevap

13

Multigraph.add_edge belgelerine benzersiz şekilde bir ufak matbaa kenarları tanımlamak için key argüman kullanması gerektiğini belirtir multigraphs gerekiyor. İşte bir örnek:

>>> import networkx as nx 
>>> G = nx.MultiGraph() 
>>> G.add_edge(1, 2, key='xyz', weight=2) 
>>> G.add_edge(1, 2, key='abc', weight=1) 
>>> G.edges(data=True) 
[(1, 2, {'weight': 2}), (1, 2, {'weight': 1})] 

xyz anahtarlı kenar güncellemek için, şimdi, sadece tekrar o parametre olarak geçirmek:

>>> G.add_edge(1, 2, key='xyz', weight=7) 
>>> G.edges(data=True) 
[(1, 2, {'weight': 7}), (1, 2, {'weight': 1})] 

önceki değerini okumak için, böyle get_edge_data kullanabilirsiniz:

>>> G.get_edge_data(1, 2, key='xyz') 
{'weight': 7} 
+0

Teşekkürler! anahtara karşılık gelen kenarları nasıl alırım? Örneğin _weight_'nin önceki değerini bilmek. İlk önce anahtarı kontrol etmek için tüm kenarlardan geçmem gerekiyor mu? – Vladtn

+1

@Vladtn, bu – jterrace

+1

nasıl yapılacağını eklemek için güncellenmiş bir cevap Bu benim kodumu büyük ölçüde kolaylaştırır ... – Vladtn

İlgili konular