python-遍历dict时删除元素

字典在被遍历的时候,不能进行删除操作(梯子原理),不然会报错

for key, value in dict.items():
  dict.pop(key)

正确的做法是,使用dict的key值构建一个list,然后遍历这个list

for key in list(dict):
  value = dict[key]
  dict.pop(key)

python2中,还可以通过dict.keys()获得一个list,获得一个用keys初始化的list,但是该方法局限于python2,因为在python3中,keys()返回的是dict_keys而不是list

for key in dict.keys():
    dict.pop(key)

在循环dict时删除一个,然后再添加一个,梯子长度不变,这样并不报错,但是由于key值有变化,所有接下来循环的key可能是新增的key值