使用属性获取边缘

Get out edges with properties

我有一个带有一些节点和一些边的有向图 G:

G.add_edges_from([ ...
('X', 'Y', {'property':  85}), ...
('X', 'T', {'property':  104}), ...
...])

然而,当我运行G.out_edges('X')时,它returnsOutEdgeDataView([('X', 'Y'), ('X', 'T')])。相反,我想获得一个带有边的元组列表(带有 属性),如下所示: [('X', 'Y', {'property': 85}), ('X', 'T', {'property': 104})]

我应该如何获得这些结果? 谢谢!

您可以使用 networkx.DiGraph.out_edges(data=True).

import networkx as nx

G = nx.DiGraph()

G.add_edges_from([
    ('X', 'Y', {'property':  85}),
    ('X', 'T', {'property':  104}),
    ('Z', 'X', {'property':  104}),
])

print(G.out_edges('X', data=True))
[('X', 'Y', {'property': 85}), ('X', 'T', {'property': 104})]

我发现没有比像这样简单地写一个列表理解更好的答案了:

def get_out_edges(node, all_edges):
    return [e for e in all_edges if node == e[0]]