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

作者:幸运的Alina 时间:2021-05-07 00:53:55 

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])

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

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


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()))

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

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

我们可以看到,当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的问题

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

python报错出现 KeyError: ‘longitude'

报错界面如下图所示:

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

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

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

如下图:

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

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

来源:https://blog.csdn.net/qq_27575895/article/details/81093495

标签:Python,字典,查找,Keyerror
0
投稿

猜你喜欢

  • numpy创建单位矩阵和对角矩阵的实例

    2023-08-05 10:25:44
  • 详解Python中的条件判断语句

    2022-05-03 09:33:28
  • Python:__eq__和__str__函数的使用示例

    2023-01-12 02:45:31
  • ACCESS中Field对象的标题属性

    2008-11-20 17:44:00
  • CentOS 7下部署php7.1和开启MySQL扩展的方法教程

    2023-11-19 11:58:09
  • python使用pandas实现数据分割实例代码

    2021-07-02 11:09:19
  • 利用CSS属性实现进度条的方式

    2010-02-25 12:31:00
  • 一篇文章弄懂Python关键字、标识符和变量

    2022-11-01 17:44:42
  • 如何随机显示图片计数器?

    2010-05-16 15:21:00
  • golang高并发的深入理解

    2023-06-19 09:12:01
  • python神经网络Batch Normalization底层原理详解

    2021-01-28 12:50:08
  • django中使用原生sql语句的方法步骤

    2023-06-29 16:36:07
  • 用Python实现KNN分类算法

    2021-12-26 14:15:24
  • Pycharm学习教程(1) 定制外观

    2021-08-01 05:18:11
  • 如何捕获人家站点的页面?

    2009-11-11 19:19:00
  • Python函数式编程指南(三):迭代器详解

    2023-06-03 06:11:52
  • python根据用户需求输入想爬取的内容及页数爬取图片方法详解

    2022-12-21 16:31:19
  • HTML在线编辑器任意设置字号大小

    2007-08-29 19:55:00
  • 新书:《精通CSS网页布局》

    2009-01-08 11:57:00
  • 浅谈numpy.where() 的用法和np.argsort()的用法说明

    2022-03-12 01:52:23
  • asp之家 网络编程 m.aspxhome.com