import networkx as nx
G = nx.DiGraph()
source = 0
target = 1
G.add_node(source, name='Ham')
G.add_node(target, name='Eggs')
G.add_edge(source, target, meal='Breakfast')
nodes = G.nodes(data=True)
for src, tgt, attr in G.edges(data=True):
# print type(node1)
src_id, src_attr = nodes[src]
tgt_id, tgt_attr = nodes[tgt]
print(str(src) + ' - ' + str(tgt) + ' : ' + attr['meal']
+ ' : ' + src_attr['name'] + ' , ' + tgt_attr['name'])
上面的代碼產生所需的,正確的輸出:Networkx節點和邊索引和屬性
0 - 1 : Breakfast : Ham , Eggs
但是代碼是錯誤的。你可以看到代碼是錯誤的,用5/7代替0/1。
短缺問題
我們如何繼續,如果不是的source = 0
和target = 1
我們使用source = 5
和target = 7
獲得輸出Breakfast : Ham , Eggs
?
長的問題
我也在尋求這些問題的答案爲更好地理解爲什麼你的解決短缺問題的作品。
- 如果我們取消對註釋掉線,我們看到,類型爲
int
,但什麼都在for
循環src, tgt
?節點對象或節點索引? - 表達式
nodes = G.nodes(data=True)
的類型爲list
。這是否意味着如果我們用5000000
和7000000
來代替5
和7
,我們會建立一個這麼長的列表?
該輸出是正確的。是什麼讓你覺得這是錯的?你會期待什麼? –
@ValentinLorentz我的「它」含糊不清。它指的是代碼,而不是輸出。改寫。 – Calaf
好的。短題中的「正確輸出」是什麼意思? –