Python 字典 dictionary changed size during iteration
2016-04-28 20:56
746 查看
1 TestMap = {1:0, 2:0, 3:1, 4:1} 2 for key in TestMap: 3 TestMap.pop(key)
运行结果:
for key in TestMap: RuntimeError: dictionary changed size during iteration
修改一下:
TestMap = {1:0, 2:0, 3:1, 4:1} ''' for key in TestMap: TestMap.pop(key) ''' for key in TestMap.keys(): TestMap.pop(key)
OK,运行正常。
分析:“for key in TestMap:”这种方式是通过iterator遍历字典(鄙人YY其内部可能是个链表),边遍历边删除会崩溃啊亲;“for key in TestMap.keys():”这种方式是通过便利一个列表来依次获取每个“key”(TestMap.keys()返回个列表),所以不崩溃啊亲。
联想:这个不容易发觉的问题让我想起了之前一个通过索引遍历列表,一边遍历一边删除会导致崩溃的问题,可是这两个问题还是有区别的。总的来讲还是遍历删除时要注意的问题。
本文首发于博客园,任何其他站点均为爬虫或转载,爬虫最无耻。
相关文章推荐
- python写文件illegal multibyte sequence问题
- python nosetests
- python get操作
- python 数据库
- python学习4
- python基础之函数
- python小练习:Opencv中将图片转为字符画
- Python3 nonlocal
- Python 闭包
- python面向对象程序设计
- win7+python+matplotlib
- The Steps of Machine Learning with Python
- Python-Scrapy 个人兴趣教程(三):扫尾
- Python-Scrapy 个人兴趣教程(二):没错,从代理IP开始
- 利用python程序浪漫安慰失恋妹纸
- python实现欧拉计划15题
- Python之Numpy之pandas
- 实用的 Python —— os.system() 在 python 语句中执行 dos 命令
- pdb — The Python Debugger
- python调用bat 整理