Python 如何修复迭代期间更改的字典大小:pygame radar

Python 如何修复迭代期间更改的字典大小:pygame radar,python,pygame,Python,Pygame,我一直在尝试让这个python脚本使用超声波传感器作为雷达模拟。每次我运行代码时,它都会运行3秒钟,然后退出并返回错误:字典在迭代过程中更改了大小 我被卡住了,不知道从哪里开始。我浏览了整个代码,找不到问题所在,更不用说字典了。也许这只是因为我缺乏经验,但帮助是值得的。完整的原始源代码可在此处找到: 它应该显示一个不断刷新的雷达,但它在两次旋转后退出。这是Python 2代码,所以用Python 2运行它(而不是像你一直做的那样用Python 3运行),例如 编辑 至于您观察到的错误,当您在迭

我一直在尝试让这个python脚本使用超声波传感器作为雷达模拟。每次我运行代码时,它都会运行3秒钟,然后退出并返回错误:字典在迭代过程中更改了大小

我被卡住了,不知道从哪里开始。我浏览了整个代码,找不到问题所在,更不用说字典了。也许这只是因为我缺乏经验,但帮助是值得的。完整的原始源代码可在此处找到:


它应该显示一个不断刷新的雷达,但它在两次旋转后退出。

这是Python 2代码,所以用Python 2运行它(而不是像你一直做的那样用Python 3运行),例如


编辑 至于您观察到的错误,当您在迭代过程中发出
dict
元素的
del
时会发生错误,例如:

d = {x, str(x): for x in range(10)}

for k, v in d.items():
    if k == 7:
        del d[k]  # <--- error here!
d={x,str(x):用于范围(10)内的x}
对于d.项()中的k,v:
如果k==7:

del d[k]#你能在这里发布你正在运行的代码和完整的回溯吗?谢谢好啊如果您想要原始开发人员访问的完整源代码:您是否对代码进行了任何更改,或者只是尝试按原样运行?如果是后者,您可能应该向开发人员提出一个问题。我确实对代码进行了编辑,以使其适应python 3,因为print函数中存在一些错误。好的,我将尝试一下。我在python2上安装cv2 b时也遇到了问题,但它在Python3上起到了作用,python2将在年底被放弃。至少在大约5年后,新代码就不应该使用它了,而且许多主要的代码库已经承诺到那时将不再使用Python,谢谢您的帮助。它工作了,现在不返回任何错误。我以python2.7运行它,并从radar.py中删除了import cv2,现在它可以正常工作,除了伺服不工作,但我应该能够自己解决这个问题。谢谢你的帮助。@TimLi酷!如果这个答案解决了你的问题,请考虑赞成/接受;norok2您还可以讨论将
d.items()
包装到
list
调用中以避免此错误的技巧。
pi@Pi01:~/radar-simulation/src $ python radar.py
d = {x, str(x): for x in range(10)}

for k, v in d.items():
    if k == 7:
        del d[k]  # <--- error here!