python - 如何修复此 python 错误?运行时错误 : dictionary changed size during iteration

标签 python

它给我这个错误:

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 程序时。

我怎样才能避免这种情况发生?

提前致谢;)

最佳答案

根据其他答案,通常的建议是避免使用 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) 调用的代码的线索!-)

关于python - 如何修复此 python 错误?运行时错误 : dictionary changed size during iteration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844837/

相关文章:

python - 删除python日志记录中的日志级别打印

python - 哪个 Windows SDK 用于构建 Python 3.5 的扩展?

python - 如何让用户在预定义的点暂停 python 脚本?

python - 使用多个 isin 子句的 Pandas 索引

python - 如何在 Django 中使用 pytest?

python - numpy dtype 错误 - (结构化数组创建)

python - 在 plone.htmlhead 中将 JSS 与 CSS 分离

python - 使用 Python 查找带有正则表达式的重叠序列

Python 使用 BeautifulSoup 将 url 写入文件

Python执行powershell命令