我意识到在遍历字典时改变字典会导致运行时错误,但我知道有适当的方法可以做到这一点,但我不知道哪些是可以接受的,哪些不是。控制台测试它们没有帮助,因为它们可能会产生运行时错误,我不确定我是否正确或只是幸运。
假设我有一个属性 status,它是一个状态字典:
self.status = {"overall": False, "started":False,
"ready":False, "awakeQueried":False,
"allQueried":False}
在整个运行过程中,这些更改为各种 True 或 False。我有一个处理失败的函数,并希望将它们全部设置为 False。优雅的方式是什么?到目前为止,我已经完成了这项工作,但我不确定是否会在某些时候遇到运行时错误:
self.status = {key:False for key in self.status}
我可以这样做吗?我不确定这里的低级功能。我不是用 .items() 或类似的东西制作副本。我正在覆盖字典,但它应该首先处理右侧,但它是一种理解,所以我不确定它是否在覆盖 self.status 之前先完成整个理解。它是在理解新字典然后设置它时在内存中存储一种副本,还是在每次迭代后循环理解和设置项目(这是我认为会出现问题的地方)?