networkx中图表中的边缘数据不一致

时间:2016-03-21 19:52:52

标签: networkx

使用networkx我创建了一个图G并添加了边(1,2)。奇怪的是,

(1,2) in G.edges() == False

G.has_edge(1,2) == True

我感到困惑。这是对问题的简要总结。实际图表数据很大,无法在此完整复制。

1 个答案:

答案 0 :(得分:2)

问题是G.edges()只有一次边缘。由于它是一个无向图,它可以是(1,2)(2,1)(你不希望两者都出现 - 你可能是第一次迭代并删除边缘)。你不能确定它会做什么顺序,因为它来自一个python dict,does not have predictable order。你可以做(1,2) in G.edges() or (2,1) in G.edges(),但你真的不想这样做 - 创建边缘列表效率很低。

所以测试应该使用G.has_edge(1,2)来检查它(并且更有效率)。

只是为了表明缺乏对不同python实现的可预测性,这就是我得到的

  

在[3]中:G = nx.Graph()

     

在[4]中:G.add_edge(1,2)

     

在[5]中:G.edges()

     

Out [5]:[(1,2)]

     

在[6]中:(1,2)在G.edges()

中      

Out [6]:True

     

在[7]中:G.add_edge(4,3)

     

在[8]中:G.edges()

     

Out [8]:[(1,2),(3,4)]

     

在G.edges()中的[9] :( 4,3)

     

Out [9]:False