2016-02-04 48 views
2

確實如此,要訪問networkx中的邊緣屬性,需要下面的尷尬第三種形式,並且沒有更多苗條前兩種形式的變化會做什麼?優先訪問網絡中的邊緣屬性x

import networkx as nx 

G = nx.Graph() 
G.add_edge(1, 2, weight=4.7) 
G.add_edge(3, 4, weight=5.8) 

# for edge in G.edges(): 
#  print edge['weight'] 
# 
# for edge in G.edges(): 
#  print G[edge]['weight'] 

for edge in G.edges(): 
    print G.edge[edge[0]][edge[1]]['weight'] 

回答

1

使用data=True

import networkx as nx 

G = nx.Graph() 
G.add_edge(1, 2, weight=4.7) 
G.add_edge(3, 4, weight=5.8) 

for node1, node2, data in G.edges(data=True): 
    print(data['weight']) 

打印

4.7 
5.8 
+0

尼斯。對於那些想知道'data = True'引用的人,這不是在https://networkx.github.io/documentation/latest/reference/generated/networkx.classes.function.edges.html#networkx.classes.function。而是在https://networkx.github.io/documentation/latest/reference/generated/networkx.Graph.edges.html – Calaf