0

我试图从列表中添加边:

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

我无法理解发生错误的原因。你能清楚地解释错误吗?

4

2 回答 2

0

看起来您正在寻找的边缘之一不存在。没有数据很难说。

您可能只想通过 sorted_G 迭代数字,而不是使用显式列表。但也许你有这样做的理由。

于 2013-09-23T15:27:13.987 回答
0

从发布的代码中,很难判断edge_temp. 这是您每次都附加到的列表。很可能您只希望(first,sorted_G[number][0])添加一次边缘,但每个循环都执行多次。我建议将add_edges_from行更改为:

G.add_edges_from([(first,sorted_G[number][0])])
于 2013-09-23T16:05:43.473 回答