在NetworkX MultiGraph

时间:2016-03-27 19:26:15

标签: python networkx

我有一个MultiGraph,它可以在任意两个节点之间有多条边:

g = MultiGraph()
g.add_nodes_from([1,2,3,4,5,6])
g.add_edges_from([(1,2), (2,1), (1,2), (3,4), (5,6), (6,5), (3,5), (3, 5), (3, 5), (3, 5)])

如何在此图中找到多重性大于2的所有边?我可以这样做:

for s in itertools.combinations(g.nodes(), 2):
    e = g[s[0]].get(s[1], {})
    if len(e) > 2:
        print(s[0], s[1])

但效率太低,所以我正在寻找更好的解决方案

2 个答案:

答案 0 :(得分:2)

for u in G.nodes():
    for neighbor in G.neighbors(u):
        if G.number_of_edges(u,neighbor)>2:
            print (u,neighbor)

注意 - 每个这样的边缘将被打印两次。

答案 1 :(得分:0)

[x for x in tmp.edges if tmp.number_of_edges(x[0], x[1]) > 1]