如何解决如何修复此python错误?RuntimeError:词典在迭代过程中更改了大小
根据其他答案,通常的建议是避免使用iteritems
(items
改为使用)。当然,这
您的选择,因为该iteritems
调用是在系统调用的最深处代表您完成的。
因此,我建议,假设Auxiliar.DataCollection.getInfo(1)
返回一个字典(在复制过程中正在更改的字典),那就是您将deepcopy
调用更改为:
self.data1 = copy.deepcopy(dict(Auxiliar.DataCollection.getInfo(1)))
这需要对所讨论的字典进行“快照”,并且快照不会更改,因此您会很好。
如果Auxiliar.DataCollection.getInfo(1)
确实 无法
返回的字典,但一些更复杂的对象,其中包括作为类型的字典和/或项目的属性,这将是一个比较复杂一点,因为这些类型的字典是你需要什么样的快照。但是,在这种情况下是不可能具体化的,因为您绝对不了解构成该关键Auxiliar.DataCollection.getInfo(1)
调用的代码!-)
解决方法
它给了我这个错误:
Exception in thread Thread-163:
Traceback (most recent call last):
File "C:\Python26\lib\threading.py",line 532,in __bootstrap_inner
self.run()
File "C:\Python26\lib\threading.py",line 736,in run
self.function(*self.args,**self.kwargs)
File "C:\Users\Public\SoundLog\Code\Código Python\SoundLog\SoundLog.py",line 337,in getInfo
self.data1 = copy.deepcopy(Auxiliar.DataCollection.getInfo(1))
File "C:\Python26\lib\copy.py",line 162,in deepcopy
y = copier(x,memo)
File "C:\Python26\lib\copy.py",line 254,in _deepcopy_dict
for key,value in x.iteritems():
RuntimeError: dictionary changed size during iteration
在执行我的python程序时。
我如何避免这种情况发生?
提前致谢 ;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。