问题描述
我正在尝试以排序方式打印Networkx图的边缘属性。
例如,
print(sorted(G.edges(data=True))
将显示有序的字典
[(3,7,OrderedDict([('w1',9.62),('w2',37.2)])),(3,8,9.42),49.6)]))]
同样,我要打印一个属性(仅w1
或w2
,data = True都打印)作为排序输出。
例如,当我尝试
print(sorted(nx.get_edge_attributes(G,'w1').values()))
不起作用。
解决方法
nx.get_edge_attributes
仅返回实际属性。可能最简单的方法可能是保留G.edges(data=True)
结果中的一个属性:
G = nx.Graph()
G.add_edge(3,8,w1= 9.62,w2=37.2)
G.add_edge(3,7,w1= 9.42,w2=49.6)
attr = 'w1'
sorted(((*edge,(attr,d[attr])) for *edge,d in G.edges(data=True)))
# [(3,('w1',9.42)),(3,9.62))]