• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解决Python字典查找报Keyerror的问题

    Python的字典一般都直接查找key ,比如

    dict={'a':1,'b':2,'c':3}
    print(dict['a'])

    但是如果在查找的key不存在的时候就会报:KeyError:

    比如你要查看print(dict['d'])

    由于这个时候dict里面并没有这个key ,所以就会直接报错,那么这个时候其实python给我们提供了一种很棒的解决方法,那就是用

    setdefault,用法如下: dict.setdefault(key,[这里设置如果不存在想将值设置为啥,默认为None])

    那么这里我们可以用此方法解决:

    print(dict.setdefault('d',0))

    然后就没有问题啦,注意下就是setdefault是如果要想往dict中添加新值的时候就使用此函数,如果只是单纯想要做查找,碰到key不存在或者希望在通过这个键读取值的时候能得到一个默认值,那么建议用defaultdict

    首先先介绍下这个所谓的defaultdict,来自于collections模块,collections是个集合模块,defaultdict(function_factory)构建的是一个类似dictionary的对象,其中key的值,自行确定赋值,但是value的类型是function_factory的类实例,而且具有默认值.这里还引入了一个概念就是工厂函数,python的工厂函数就是指那些内建函数都是类对象,当你调用他们时,实际上是创建了一个类实例。

    比如int(),str(),set()等,这里我们看下例子:

    import collections
    s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
    d = collections.defaultdict(list)
    for k, v in s:
        d[k].append(v)
    print(d['yellow'])
    print(d['white'])
    print(list(d.items()))

    我们最后得到的输出结果如下:

    我们可以看到,当d中没有对应的key时最后返回的是个空列表,那是因为我们在设置defaultdict的时候用的工厂函数是list,而list的默认值是空列表,下面我们在看下如果工厂函数是set()会是什么样子

    import collections
    s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
    d = collections.defaultdict(set)
    for k, v in s:
        d[k].add(v)
    print(d['yellow'])
    print(d['white'])
    print(list(d.items()))

    结果输出如下:

    补充:python报错出现 KeyError: 'longitude'

    python报错出现 KeyError: ‘longitude'

    报错界面如下图所示:

    我在网上寻找了方法,确实找到一个解决方案:对你可能有用的解决方案一

    但是我试了还是没用,于是,当我定睛一看,发现竟又是由于俺的粗心造成的。啊,如下图,按在longitude前面少了个逗号,

    如下图:

    所以这个问题就解决啦,好,我继续我的课程设计了。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • python Manager 之dict KeyError问题的解决
    • 新手常见6种的python报错及解决方法
    • Python操作dict时避免出现KeyError的几种解决方法
    • Python基础中所出现的异常报错总结
    上一篇:pytorch 如何使用batch训练lstm网络
    下一篇:基于tensorflow权重文件的解读
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解决Python字典查找报Keyerror的问题 解决,Python,字典,查找,报,