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

 更新时间:2021年05月26日 15:43:58   作者:幸运的Alina  
这篇文章主要介绍了解决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前面少了个逗号,

如下图:

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

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

相关文章

  • pyecharts如何使用formatter回调函数的问题

    pyecharts如何使用formatter回调函数的问题

    这篇文章主要介绍了pyecharts如何使用formatter回调函数的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python如何import文件夹下的文件(实现方法)

    Python如何import文件夹下的文件(实现方法)

    下面小编就为大家带来一篇Python如何import文件夹下的文件(实现方法)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • python IDLE添加行号显示教程

    python IDLE添加行号显示教程

    这篇文章主要介绍了python IDLE添加行号显示教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python通过pymysql调用MySQL进行增删改移查

    Python通过pymysql调用MySQL进行增删改移查

    这篇文章主要介绍了Python通过pymysql调用MySQL,从而实现数据的增删改移查功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2021-12-12
  • django框架单表操作之增删改实例分析

    django框架单表操作之增删改实例分析

    这篇文章主要介绍了django框架单表操作之增删改,结合实例形式分析了Django框架前台数据操作提交与后台处理相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • python 不关闭控制台的实现方法

    python 不关闭控制台的实现方法

    在win32下,双击python程序会打开dos窗口,但是执行完毕后就会关闭,看不到输出的结果
    2011-10-10
  • 深入理解Pytorch中的torch. matmul()

    深入理解Pytorch中的torch. matmul()

    这篇文章主要介绍了Pytorch中的torch. matmul()的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python实现创建词云的示例详解

    Python实现创建词云的示例详解

    词云一般是根据输入的大量词语生成的,如果某个词语出现的次数越多,那么相应的大小就会越大,本文将利用wordcloud模块实现词云生成,需要的可以参考下
    2023-10-10
  • python 列表,集合和字典的增删改查

    python 列表,集合和字典的增删改查

    这篇文章主要介绍了python 列表,集合和字典的增删改查,本文分别对他们一一说明,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • python ssh 执行shell命令的示例

    python ssh 执行shell命令的示例

    这篇文章主要介绍了python ssh 执行shell命令的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09

最新评论