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解决方法相关推荐

  1. Python 中文注释报错解决方法

    Python 中文注释报错解决方法 参考文章: (1)Python 中文注释报错解决方法 (2)https://www.cnblogs.com/cjiong/p/5881983.html 备忘一下.

  2. Eclipse + Pydev开发Python时import报错解决方法

    一.  原文链接:http://blog.csdn.net/lhanchao/article/details/51306626            用eclipse +PyDev开发python时, ...

  3. python运行启动报错解决方法_解决python运行启动报错问题

    解决python运行启动报错问题 问题一: python启动报错api-ms-win-crt-process-l1-1-0.dll丢失 解决: 下载api-ms-win-crt-process-l1- ...

  4. python运行启动报错解决方法_51testing:iOS自动化测试的那些干货:关于appium启动报错问题的解决办法...

    原标题:51testing:iOS自动化测试的那些干货:关于appium启动报错问题的解决办法 我们在进行iOS Appium自动化测试的时候,会遇到环境配置.兼容使用问题,这里做个总结,以避免后续踩 ...

  5. python运行启动报错解决方法_pyspider启动错误解决(Python 3.7)

    问题一 安装好pyspider之后,在启动的时候,报出上图错误. 原因 async和await从 python3.7 开始已经加入保留关键字中. 参考: What's New In Python 3. ...

  6. 深度学习部署:Windows安装pycocotools报错解决方法

    深度学习部署:Windows安装pycocotools报错解决方法 1.pycocotools库的简介 2.pycocotools安装的坑 3.解决办法 更多Ai资讯:公主号AiCharm 本系列是作 ...

  7. Parsing error: No Babel config file detected for xxx Either disable config file checking...报错解决方法

    Parsing error: No Babel config file detected for xxx Either disable config file checking-报错解决方法 使用Vu ...

  8. python scipy安装失败的解决方法

    python scipy安装失败的解决方法 from scipy.misc import imreadTraceback (most recent call last):File "D:/P ...

  9. 关于python卸载不掉的解决方法

    关于python卸载不掉的解决方法 python的卸载 ** 问题: 今天在删除python3.7.3的时候,发现使用安装包"python-3.7.3-amd64.exe"卸载(u ...

最新文章

  1. Compiling: main.cpp /bin/sh: g++: not found
  2. C#中ref和out的原理
  3. 一条命令monkey命令
  4. 动态规划解题一般思路
  5. zstd安装_在ARM架构服务器上编译Greenplum6并制作rpm安装包
  6. hdu1181(变形课)
  7. jquery淡入淡出效果及突出显示案例
  8. CVPR 新规严禁审稿期间公开宣传论文,可发 arXiv,LeCun:疯了吧!
  9. Pr效果:视频过渡效果
  10. 利用python制作动态二维码
  11. 宽带拨号找不到netcfg.hlp文件
  12. PLA-PEG2000-Maleimide,聚乳酸和马来西安亚楠修饰的PEG,MAL-PEG2000-PLA
  13. Unity 之游戏特效
  14. 根据贷款还款方式(等额本金,等额本息,等本等息,先息后本),计算本息
  15. OpenWrt上搭建纯L2TP服务器[ZT]
  16. 2021年中国CRM市场规模及市场格局分析:市场规模达156亿元[图]
  17. 安装window7系统
  18. MEM/MBA 写作-论说文(03)立意 答案解析
  19. USB射频功率计DIY——构建软件校准方案
  20. 硅谷课堂第十一课-公众号消息和微信授权

热门文章

  1. CSS盒子模型总结(小练习网易新闻列表和京东导航条)
  2. (附源码)基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计271611
  3. MVVM的优点和缺点
  4. ConvFormer: Closing the Gap Between CNN and Vision Transformers
  5. paper pass检测
  6. Hadoop HA《hadoop-Yarn》
  7. 寻找图中所有哈密尔顿环(不重复)
  8. IDEA汉化官方插件
  9. android视频播放处理,安卓版微信视频播放全屏处理
  10. 基础数论(3)同余、逆元