python在遍历dict中使用pop删除元素保错
作者:
modao233 | 来源:发表于
2019-12-10 18:00 被阅读0次
字典在遍历的时候,不能进行删除操作(梯子原理),不然会报错
但是,也有骚操作,在循环中删除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
本文标题:python在遍历dict中使用pop删除元素保错
本文链接:https://www.haomeiwen.com/subject/udwggctx.html
网友评论