2013-09-23 45 views
0

我試圖從列表中添加邊:G.add_edge錯誤的關鍵錯誤

for first in G.nodes(): 
    G_dict = copy.copy(G.node[first]) 
    sorted_G = sorted(G_dict.iteritems(), key = op.itemgetter(1), reverse = True) 
     for number in range(0, close_limit): 
      edge_temp.append((first,sorted_G[number][0])) 
      print(edge_temp) 
      G.add_edges_from(edge_temp) 

當我打印edge_temp,效果很不錯。然而,當我試圖使用功能G.add_edges_from(),錯誤是:

Traceback (most recent call last): 
    File "C:\Python27\Wireless\rd_pc_contact1.py", line 95, in <module> 
    G.add_edges_from(edge_temp) 
    File "C:\Python27\lib\site-packages\networkx- 
    1.8.1py2.7.egg\networkx\classes\graph.py", line 785, in add_edges_from 
    datadict=self.adj[u].get(v,{}) 
    KeyError: 0 

我不明白爲什麼發生錯誤的原因。你能否清楚地解釋錯誤?

+0

我試圖更正您的代碼上的縮進。如果需要,隨時修復。 – 2013-09-23 06:01:21

回答

0

它看起來像你正在尋找的邊緣不存在。沒有數據很難說。

你可能想通過sorted_G迭代數字而不是使用明確的列表。但也許你有這樣做的理由。

0

從發佈的代碼中,很難分辨出edge_temp中的內容。這是您每次追加的列表。賠率是你只想要邊(first,sorted_G[number][0])一次,但你每次循環多次。我建議將add_edges_from行更改爲:

G.add_edges_from([(first,sorted_G[number][0])])