美文网首页
python在遍历dict中使用pop删除元素保错

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