字典循环时的“坑”

字典循环时出错

#dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}

将字典中键含有’k’元素的键值对删除。


#正常思路:先找出字典中所有的键,如果键中有k,则将含有’k’元素的键值对删除。
dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
for key in dic:
if ‘k’ in key:
dic.pop(key)
print(dic)
#此时,字典会直接报错,是RuntimeError: dictionary changed size during iteration,即为字典在循环迭代时,改变了大小。

#建立空列表,把字典中带k的键找出来放在列表里,遍历循环列表,只要出现在列表中的,字典中删除键对应的值
dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
l1 = []
for key in dic:
if ‘k’ in key:
l1.append(key)
print(l1) #[‘k1’, ‘k2’, ‘k3’]
for i in l1:
dic.pop(i)
print(dic) #{‘age’: 18}

#直接在取字典中的键时,直接list(dic.keys()),省一个for循环
dic = {‘k1’: ‘太白’, ‘k2’: ‘barry’, ‘k3’: ‘白白’, ‘age’: 18}
for key in list(dic.keys()): # [‘k1’, ‘k2’, ‘k3’,‘age’]
if ‘k’ in key:
dic.pop(key)
print(dic)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值