get_edge_attribute返回networkx中的键错误

时间:2016-03-02 06:04:55

标签: python networkx

我在networkx中尝试一些非常简单的事情

import networkx as nx
G = nx.erdos_renyi_graph(4,1) # This creates a complete graph 

nx.set_edge_attributes(G, 'sign', {(0, 1) : 1})

print nx.get_edge_attributes(G, 'sign')[(0, 1)]

打印1。到现在为止还挺好。但现在我将最后一行更改为:

print nx.get_edge_attributes(G, 'sign')[(1, 0)]

我认为由于边缘是无向的,这不重要,代码应该再次打印1。但令我惊讶的是,我得到了这个:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    print nx.get_edge_attributes(G, 'sign')[(1, 0)]
KeyError: (1, 0)

这让我发疯了。它不应该(1, 0)(0, 1)相同吗?此外,如果不是这种情况,我如何使networkx对待它们?另外,在我们谈论边缘的其他地方,我们是否总是需要为每个边缘指定两次?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为你应该使用:

访问无向图的edge属性
G[0][1]['sign']

G[1][0]['sign']

两者都正确返回1。我认为nx.get_edge_attributes方法只允许获取边缘的属性作为一个整体,如:

print nx.get_edge_attributes(G, 'sign')

返回:

{(0, 1): 1}

希望有所帮助。