打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 字典 dictionary changed size during iteration
http://www.cnblogs.com/codeape/archive/2012/11/21/2780534.html
2012

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()返回个列表),所以不崩溃啊亲。

联想:这个不容易发觉的问题让我想起了之前一个通过索引遍历列表,一边遍历一边删除会导致崩溃的问题,可是这两个问题还是有区别的。总的来讲还是遍历删除时要注意的问题。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python遍历删除字典里值为空的元素报错
python数组的使用
【烟花原创】VBA零基础之第124篇字典(一)
map,set,list,等JAVA中集合解析
VBA字典查找、求和、去重
二十八讲 VBA字典下
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服