python在遍历dict中使用pop删除元素保错
2019-12-10 本文已影响0人
modao233
字典在遍历的时候,不能进行删除操作(梯子原理),不然会报错
但是,也有骚操作,在循环中删除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)