如何在networkx有向图中迭代和删除特定的边?

4

我有一个包含正负边的图形,使用networkx库。我想找到所有的负边并将它们反转。我编写了下面的程序来查找和删除负边,但是我遇到了迭代错误。以下是代码:

for edge in G.edges():
    sign = G.get_edge_data(edge[0], edge[1])['sign']
    if sign == -1:
       G.remove_edge(edge[0], edge[1])
       G.add_edge(edge[1], edge[0])

如何遍历所有边并反转所有负边?
1个回答

4

在迭代过程中更改元素是不好的,嘿嘿 ;o)

thingsToChange = []
for edge in G.edges():
    sign = G.get_edge_data(edge[0], edge[1])['sign']
    if sign == -1:
       thingsToChange.append(edge)

更改它们后面没问题:
for things in thingsToChange:
    G.remove_edge(edge[0], edge[1])
    G.add_edge(edge[1], edge[0])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接