Python字典查找报Keyerror解决方法

Python字典查找报Keyerror解决方法Python 的字典一般都直接查找 key 比如 dict a 1 b 2 c 3 print dict a 但是如果在查找的 key 不存在的时候就会报 KeyError 比如你要查看 print dict d 由于这个时候 dict 里面并没有这个 key 所以就会直接报错 那么这个时候其实 python 给我们提供了一种很棒的解决方法 那就是用 setdefa

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解决方法

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198218.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:32
下一篇 2026年3月26日 下午3:33


相关推荐

  • Web 前端开发学习资料整理

    以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站、书籍)。我只是闲来无事整理一下,如有不足,嘴下留情..毕竟分享不是一件坏事,共同学习…一、语言基础(以书和网站为主)1.HTML&CSS:(1)入门:Codeademy上的html&css课程——在线交互式编程平台,弄清楚基本概念和基本语法w3school上的HTML/CSS教程——

    2022年4月16日
    56
  • full connection layer(inconnected)

    我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~定义…

    2022年4月16日
    49
  • sklearn库安装方法

    sklearn库安装方法Sklearn 全称 Scikit Learn 是基于 Python 语言的机器学习工具 是机器学习中的常用第三方模块 它建立在 NumPy SciPy 和 Matplotlib 之上 因此 在安装 sklearn 之前 需要先安装其三个依赖库 numpy scipy matplotlib 具体安装步骤如下 1 进入官网下载相应的模块安装地址如下 https www lfd uci edu gohlke pythonlibs 网站中包含了 python 中所需的子库 进去之后查找比较麻烦 可以在网址后

    2026年3月19日
    3
  • IE11打不开网页, 所有菜单都被禁用了。

    IE11打不开网页, 所有菜单都被禁用了。

    2021年8月29日
    83
  • The MySQL C API 编程实例

    The MySQL C API 编程实例

    2021年11月13日
    46
  • 转行网络安全简历重构指南:从 “开发 / 运维” 到 “安全工程师”(附模板)

    转行网络安全简历重构指南:从 “开发 / 运维” 到 “安全工程师”(附模板)

    2026年3月14日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号