networkx 的运行时错误:迭代期间字典已更改,而 运行 神经气体脚本

Runtime error with networkx : dictionary changed during iteration while running a neural gas script

我正在尝试 运行 一个神经气体网络,它的旧脚本不能很好地与 networkx 2 配合使用,所以我修改了一些东西。 但是我收到错误:字典在迭代期间更改了大小,我不知道如何解决这个问题,因为 networkx 不是我的专长。有帮助吗?

现在导致问题的代码:

def prune_connections(self, a_max):


    for u, v, attributes in self.network.edges(data=True):



        if attributes['age'] > a_max:



            self.network.remove_edge(u, v)



    for u in self.network.nodes():



        if self.network.degree(u) == 0:



            self.network.remove_node(u)

以及我收到的错误:

    in __iter__

        for nbr, dd in nbrs.items():

RuntimeError: dictionary changed size during iteration

这里是循环遍历图表的边缘:

for u, v, attributes in self.network.edges(data=True):

但是在那个循环中你修改了边。所以 self.network.edges (这基本上是一个字典)在你迭代的时候正在改变。 python.

不允许这样做

解决这个问题的方法是预定义

edgelist = list(self.network.edges(data=True))

然后做

for u, v, attributes in edgelist: