python - 如何在迭代期间修复字典更改的大小:pygame 雷达
问题描述
我一直试图让这个 python 脚本使用超声波传感器作为雷达模拟。每次我运行代码时,它都会工作 3 秒,然后退出并返回错误:字典在迭代期间更改了大小。
我很困,不知道从哪里开始。我浏览了整个代码,找不到问题,更不用说:字典。也许只是我缺乏经验,但帮助将是可观的。完整的原始源代码可以在这里找到:https ://github.com/AmrMohamed-95/radar-simulation
pi@Pi01:~/radar-simulation/src $ python3 radar.py
pygame 1.9.4.post1
Hello from the pygame community. https://www.pygame.org/contribute.html
dictionary changed size during iteration
Radar Exit
pi@Pi01:~/radar-simulation/src $
它应该显示一个持续刷新的雷达,但它会在两圈后退出。
解决方案
它是 Python 2 代码,所以用 Python 2 运行它(而不是 Python 3,就像你一直在做的那样),例如
pi@Pi01:~/radar-simulation/src $ python radar.py
编辑
至于您观察到的错误,它发生在您在迭代元素时发出del
adict
元素,例如:
d = {x, str(x): for x in range(10)}
for k, v in d.items():
if k == 7:
del d[k] # <--- error here!
这可能会导致不一致的行为,即使错误没有出现,也被认为是不好的做法。
要修复它,您应该重写代码以避免del ...
在那个代码库中,这似乎发生在display.py
第 106 行。
推荐阅读
- react-native - react-native run-windows 在构建阶段失败
- python - ValueError:使用 np.randaom.multivariate_normal 设置具有序列的数组元素
- python - dask 创建组合列以模拟按 2 列排序
- java - 使用角度的弹簧卡夫卡前端
- spring-boot - 同一项目中的 JaxWS、JaxRS Apache CXF + Springboot SOAP 和 RESFTful 服务
- swift - SDWebImage 更改 maxDiskAge
- python-3.x - 用 0 替换映射字典中的空项
- c# - 在 ASP .NET 中重试发送通过 C# 发送的失败消息
- python - 如何将多个列表从一个变量变成一个列表(odoov11)?
- wpf - Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?