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:
我正在尝试 运行 一个神经气体网络,它的旧脚本不能很好地与 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: