字典在遍历的时候,不能进行删除操作(梯子原理),不然会报错
但是,也有骚操作,在循环中删除key然后再添加一个key,梯子长度不变,不报错,但是由于key值有变化,所有接下来循环的key可能是新增的key值:点击
#我使用的错误用法
for key, value in dict.items():
dict.pop(key)
#我的修正方案
for key in list(dict):
value = dict[key]
dict.pop(key)
#看到别人使用的错误用法
for key in dict:
dict.pop(key)
会报这个错误:RuntimeError: dictionary changed size during iteration
这种方式Python2可行,Python3还是报上面这个错误。Python3报错的原因是keys()函数返回的是dict_keys而不是list
可以的用法:用list函数,传入字典,会生成一个根据字典key值生成的列表
for key in list(dict):
dict.pop(key)
Python3报错的原因是keys()函数返回的是dict_keys而不是list
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。