前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3中如何删除字典中值为空的键值对?

Python3中如何删除字典中值为空的键值对?

作者头像
BigYoung小站
发布2020-05-04 21:29:56
5.8K0
发布2020-05-04 21:29:56
举报
文章被收录于专栏:BigYoung小站

问题:

如有你有这样的一个字典数据,如下:

代码语言:javascript
复制
data = {'name': 'Jack',
'mobile': '12345678911',
'address': '',
'ID': '',
}

请问应该如何删除值为空的键值对?

错误答案:

代码语言:javascript
复制
for k in data.keys():
if not data[k]:
del data[k]

以上代码能够完成我的问题吗?思考一分钟再回答是否正确!!!

答案:错!!! 会报如下错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration

报错意思:字典在迭代期间有改变

正确答案:

代码语言:javascript
复制
for k in list(data.keys()):
if not data[k]:
del data[k]

细心的朋友会发现,这里我们对data.keys()做了一个list()操作,请大家想想为什么要做这样的一个操作呢?

解答

代码语言:javascript
复制
因为在python3中dict.keys()是一个迭代器。迭代器在操作过程中,是不允许被修改的。所以我们要把迭代器(data.keys()),改为一个list(非迭代器),这样我们就可以对字典操作了。
其实这里我们通过list()已经把for循环迭代的对象,由原来的data.keys()变为了一个由data.keys()组成的一个list()数据了。

疑问

请问,python3中的字典,是有序的数据,还是无序的数据?

欢迎大家留言回答!!!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BigYoung小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题:
  • 错误答案:
  • 正确答案:
  • 解答
  • 疑问
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档