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)

Python3报错的原因是keys()函数返回的是dict_keys而不是list

上一篇下一篇

猜你喜欢

热点阅读