完美解决python遍历删除字典里值为空的元素报错问题_python

exam = { 'math': '95', 'eng': '96', 'chn': '90', 'phy': '', 'chem': '' }

使用下列遍历的方法删除:

1. for e in exam:
2. if exam[e] == '':
3. del exam[e]

结果出现下列错误,怎么解决:

Traceback (most recent call last):
 File "Untitled.py", line 3, in <module>
  for e in exam:
RuntimeError: dictionary changed size during iteration

正确做法:

1. s = {"1":a,"2":b,"3":c,"4":d,"5":e}
2. s_key = list(s.keys())
3. for k_s in s_key:

4.#比如我要删除第四个元素

5.del s["4"]

只是在for循环中,相当于对链表的操作,它会自动调用next方法!

字典的迭代器会遍历它的键,在这个过程中,不能改变这个字典!不能删除、添加数据

要先记录要删除的元素的索引,遍历完后再删除,exam.keys()返回的是一个独立的列表

以上这篇完美解决python遍历删除字典里值为空的元素报错问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python
遍历字典
python 遍历字典元素、python 遍历字典、python 遍历嵌套字典、python遍历字典的key、python如何遍历字典,以便于您获取更多的相关知识。

时间: 2024-10-26 19:27:09

完美解决python遍历删除字典里值为空的元素报错问题_python的相关文章

解决Python 遍历字典时删除元素报异常的问题_python

错误的代码① d = {'a':1, 'b':0, 'c':1, 'd':0} for key, val in d.items(): del(d[k]) 错误的代码② -- 对于Python3 d = {'a':1, 'b':0, 'c':1, 'd':0} for key, val in d.keys(): del(d[k]) 正确的代码 d = {'a':1, 'b':0, 'c':1, 'd':0} keys = list(d.keys()) for key, val in keys: d

Python合并字典键值并去除重复元素的实例_python

假设在python中有一字典如下: x={'a':'1,2,3', 'b':'2,3,4'} 需要合并为: x={'c':'1,2,3,4'} 需要做到三件事: 1. 将字符串转化为数值列表 2. 合并两个列表并添加新的键值 3. 去除重复元素 第1步通过常用的函数eval()就可以做到了,第2步需要添加一个键值并添加元素,第3步利用set集合的性质可以达到去重的效果,不过最后需要再将set集合转化为list列表.代码如下: x={'a':'1,2,3','b':'2,3,4'} x['c']=

ajax中eval()解析函数(json反馈值)函数字符串解析 报错问题

ajax中eval()解析函数(json反馈值)函数字符串解析 报错问题 在一个ajax效果实现的时候,火狐报错,内容意思大概是"函数字符串解析错误",于是用alert(),发现 var result = eval(xmlhttp.responseText); 这句eval函数报错,xmlhttp.responseText可以正常弹出,但只要是eval函数一解析,就会报错,并且不显示数据:蛋疼的我只好在一般处理程序中开始设置断点,查询错误,不知道原因的我一开始就将问题锁定在了反馈值这上

vb net-VB.NET2010:删除单元格数据时条件判断语句报错

问题描述 VB.NET2010:删除单元格数据时条件判断语句报错 VB.NET2010表格DataGridView2_CellValidating事件中 If e.RowIndex >= 0 And IIf(IsDBNull(DataGridView2.CurrentCell.Value)" DataGridView2.CurrentCell.Value) <> e.FormattedValue Then... 当我删除当前单元格内容时,如果针对字符型字段OK,但是针对数值型字

oracle-text里修改一个timestamp格式的时间,使他为空后保存报错,说格式不对

问题描述 text里修改一个timestamp格式的时间,使他为空后保存报错,说格式不对 严重: Servlet.service() for servlet [jsp] in context with path [/java23_news] threw exception [An exception occurred processing JSP page /SaveNews.jsp at line 35 32: news.setSummary(summary); 33: news.setAut

javamail truts-做后台发送邮件,用main测试好试,单合到项目中Action里就没用,也没报错

问题描述 做后台发送邮件,用main测试好试,单合到项目中Action里就没用,也没报错 import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.interne

c语言怎么判断文件为空啊,如果文件里没有数据,就会报错

问题描述 c语言怎么判断文件为空啊,如果文件里没有数据,就会报错 while(!feof(fp)) { s=(Tx *)malloc(sizeof (Tx)); fscanf(fp,"%d %s %d ",&s->id,&s->name,&s->tel); printf("%d%s%d ",s->id,s->name,s->tel); s->next=a->next; a->next=s;

java-有谁用疯狂JAVA讲义么?为什么里面的 Lambda的代码都会报错

问题描述 有谁用疯狂JAVA讲义么?为什么里面的 Lambda的代码都会报错 有谁用疯狂JAVA讲义么?为什么里面的 Lambda的代码都会报错 解决方案 最后找到了方法,直接在cmd窗口中,运行Java 类名,就可以正常运行,也不会报错,MyEclipse 和 eclipse 运行都不行的 解决方案二: 可能是你的JDK版本跟他的不同,有些代码需要JDK1.7的,所以建议更新一下JDK 解决方案三: 是不是没导入相应的包... 解决方案四: 是不是没导入相应的包... 解决方案五: jdk8支

Python基础中所出现的异常报错总结_python

今天我们来探索python中大部分的异常报错 首先异常是什么,异常白话解释就是不正常,程序里面一般是指程序员输入的格式不规范,或者需求的参数类型不对应,不全等等. 打个比方很多公司年终送苹果笔记本,你程序话思维以为是(MAC)电脑笔记本,结果给你个苹果+笔记本...首先类型不对,数量也不对. 先来看几个常见的报错如下: NameError 命名错误 原因是: name 'a' is not defined  命名a还未定义 简单来说就是程序不知道a带表谁 如果a=1 那程序就懂了 a代表1 所以