字典循环查询时不能进行删除操作,会报错!!!

不仅是字典,列表同样会。

例如:将dic字典中含有’k‘的键删除

dic = {'k1':'v1','k2':'v2','a3':'v3'}
for i in dic:
    if 'k' in i:
        del dic[i]
        print(dic)

输出报错:

它虽然删除了第一个,但是之后开始报错

{'k2': 'v2', 'a3': 'v3'}
Traceback (most recent call last):
  File "D:/PycharmProjects/untitled/day7/数据类型汇总.py", line 48, in <module>
    for i in dic:
RuntimeError: dictionary changed size during iteration

 

解决办法:将含有'k'的键值单独拿出来创建一个列表,再通过列表元素循环删除字典中的键;或者将不含有’k‘的键值重新创建一个新的字典

dic = {'k1':'v1','k2':'v2','a3':'v3'}

dic1 = {}
for i in dic.keys():
    if 'k' not in i:
       dic1 = dic1.setdefault(i,dic[i])
       print(dic1)

'''
li = []
for i in dic.keys():
    if 'k' in i:
        li.append(i)
for i1 in li:
    if 'k' in i1:
        del dic[i1]
print(dic)

'''

 

转载于:https://www.cnblogs.com/aizhinong/p/11335644.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值