python遍历字典删除元素错误

作者: 生信编程日常 | 来源:发表于2020-01-31 20:11 被阅读0次

今天写了这么一段代码,类似于这样:

d = {'one':1, 'two':2, 'three':3, 'four':4, 'five':5}
for key in d:
    if key == 'three':
        del d[key]

这里报了一个这样的错误:
RuntimeError: dictionary changed size during iteration;

去查了一下,发现官方的一个解释:
Dictionaries implement a tp_iter slot that returns an efficient iterator that iterates over the keys of the dictionary. During such an iteration, the dictionary should not be modified, except that setting the value for an existing key is allowed (deletions or additions are not, nor is the update() method). This means that we can write

for k in dict: ...
which is equivalent to, but much faster than

for k in dict.keys(): ...
as long as the restriction on modifications to the dictionary (either by the loop or by another thread) are not violated.

也就是说在迭代字典的时候,每次迭代不得循环删除或者更新字典。并且提到for k in dict与for k in dict.keys()功能一样,并且更快。

这个错误的解决方式是将keys转化为列表迭代:

keys = list(d.keys())
for key in keys:
    if key == 'three':
        del(d[key])

字典d返回:
{'one': 1, 'two': 2, 'four': 4, 'five': 5}

欢迎关注公众号!


生信编程日常

相关文章

  • python遍历字典删除元素错误

    今天写了这么一段代码,类似于这样: 这里报了一个这样的错误:RuntimeError: dictionary ch...

  • Python 删除字典元素的4种方法

    Python字典的clear()方法(删除字典内所有元素) Python字典的pop()方法(删除字典给定键 ke...

  • Swift 4.0 字典(Dictionary)学习

    定义字典常量(常量只有读操作) 定义字典变量 赋值 取值 修改value/添加元素 删除元素 字典遍历

  • swift字典

    创建一个不可变字典 创建一个可变字典 添加元素 删除元素 修改元素 通过key取出value 遍历字典 合并字典

  • 数据团Python_5. Python映射:字典dict

    5. Python映射:字典dict 5.1 字典dict基本概念(重点) 5.2 dict字典的元素访问及遍历 ...

  • 新2019计划:python学习-字典【4】

    字典 本篇章讲述数据结构字典,主要围绕如何访问字典,如何修改字典,如何删除字典某元素,如何遍历字典,字典的常见方法...

  • 8.字典dict

    目录0.字典介绍1.字典定义和初始化2.字典元素访问3.字典添加和修改4.字典删除5.字典遍历6.字典遍历和移除7...

  • python中的dict

    字典的添加、删除、修改操作 字典的遍历 字典items()的使用 每个元素是一个key和value组成的元组,以列...

  • 07-字典与集合的操作

    字典 创建多个元素的字典 字典的遍历 遍历键 遍历键和值 字典的内置函数 clear() 清空字典 **copy...

  • Python字典遍历操作实例小结

    这篇文章主要介绍了Python字典遍历操作,结合实例形式总结分析了Python遍历字典键值对、遍历键、遍历值等相关...

网友评论

    本文标题:python遍历字典删除元素错误

    本文链接:https://www.haomeiwen.com/subject/voywthtx.html