纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

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

幸运的Alina   2021-05-26 我要评论
想了解解决Python字典查找报Keyerror的问题的相关内容吗幸运的Alina在本文为您仔细讲解Python字典查找Keyerror的相关知识和一些Code实例欢迎阅读和指正我们先划重点: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前面少了个逗号

如下图:

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

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


相关文章

猜您喜欢

  • Java类加载机制及热部署原理 详解Java的类加载机制及热部署的原理

    想了解详解Java的类加载机制及热部署的原理的相关内容吗了不起的盖茨比。在本文为您仔细讲解Java类加载机制及热部署原理的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Java类加载机制,Java热部署原理下面大家一起来学习吧。..
  • C#类中方法的执行顺序 C#类中方法的执行顺序是什么

    想了解C#类中方法的执行顺序是什么的相关内容吗犁痕在本文为您仔细讲解C#类中方法的执行顺序 的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C#类方法执行顺序,C#类执行顺序下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Videogametimes.com 【视游时光】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式