zoukankan      html  css  js  c++  java
  • 字典循环查询时不能进行删除操作,会报错!!!

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

    例如:将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)
    
    '''
  • 相关阅读:
    Redis其他知识
    Mybatis的sql语句操作
    Redis
    mybatis插件原理
    mybatis工作原理
    Mybatis逆向工程
    mybatis缓存机制
    Mybatis查询
    zabbix api添加主机
    jenkins + bitbucket 实现 pr自动构建及build状态通知
  • 原文地址:https://www.cnblogs.com/aizhinong/p/11335644.html
Copyright © 2011-2022 走看看