使用networkx我创建了一个图G并添加了边(1,2)。奇怪的是,
(1,2) in G.edges() == False
但
G.has_edge(1,2) == True
我感到困惑。这是对问题的简要总结。实际图表数据很大,无法在此完整复制。
答案 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