Google一下轻松找到了答案,大家可以看一下Python Wiki,很简单,翻译如下。

在Python中,当你使用a[key]这种方式从字典中获取一个值时,若字典中不存在这个此key时就会产生一个KeyError的错误,比如:

In [1]: d = {'name': 'wang'}

In [2]: d['name']
Out[2]: 'wang' In [3]: d['age']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-3-39d5d5cefe61> in <module>()
----> 1 d['age'] KeyError: 'age'

不过也提供了解决办法:可以使用a.get(key, default_value)这种方式来避免这种错误,如下:

In [4]: d.get('age', 13)
Out[4]: 13

还有一种更高级的方法,不知道改怎么翻译好,大家可以去看原文,setdefault(key, value)方法,使用方法如下(好像实现的是对应的一个关系):

In [7]: default = 'wang'

In [8]: dog_own_by = {'Peter': 'zhao', 'Bug': 'qian'}

In [9]: dogs = []

In [10]: for owner in ['Peter', 'Bug', 'Bad']:
....: dog
dog_own_by dogs
....: dogs.append(dog)
dog_own_by dogs
....: dogs.append(dog_own_by.setdefault(own, default))
....:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-10-cf8486afc0be> in <module>()
1 for owner in ['Peter', 'Bug', 'Bad']:
----> 2 dogs.append(dog_own_by.setdefault(own, default))
3 NameError: name 'own' is not defined In [11]: for owner in ['Peter', 'Bug', 'Bad']:
dogs.append(dog_own_by.setdefault(owner, default))
....: In [12]: dogs
Out[12]: ['zhao', 'qian', 'wang'] In [13]: dog
dog_own_by dogs In [13]: dog_own_by
Out[13]: {'Bad': 'wang', 'Bug': 'qian', 'Peter': 'zhao'}

看了link的翻译,功能和get差不多,具体说是如果key还不存在于已有的字典中则添加到里边去,并赋一个默认值,实验一下,如下:

In [14]: d
Out[14]: {'age': 13, 'name': 'wang'} In [15]: d.setdefault('sex', 'male')
Out[15]: 'male' In [16]: d
Out[16]: {'age': 13, 'name': 'wang', 'sex': 'male'}

好物、羊毛线报群,需要的可加QQ群 1049623906

Python KeyError的更多相关文章

  1. Ubuntu下导入PySpark到Shell和Pycharm中(未整理)

    实习后面需要用到spark,虽然之前跟了edX的spark的课程以及用spark进行machine learning,但那个环境是官方已经搭建好的,但要在自己的系统里将PySpark导入shell(或 ...

  2. Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed

    最近在用Python开发自己的博客,需要用到Python生成验证码,当然肯定要用到Python的图形处理库PIL,因为我用的是windows. 所以在安装好pil之后就开始写,就按照题目所说出现了Th ...

  3. python执行时遇到 KeyError: b'somevar' 时需要想到的

    虽然这个问题很小,但我觉得很有必要单独拿出来强调一下. 这样在遇到类似错误的时候可以很快反应过来,进而节约了时间. 这里我拿 shelve 模块举例(shelve的作用大致就是把python变量存放到 ...

  4. python 字典的KeyError处理方法

    先看一段代码: user = dict(name="brainliao", age=32) print(user["sex"]) 运行结果如下: user这个字 ...

  5. Python处理HTTP返回包遇到问题总结TypeError、keyError、SyntaxError、AttributeError

    处理HTTP返回包包括对关键参数的校验,参数完整性检验,获取返回包参数的方法,返回包数据去重方法 在执行时遇到不少问题,部分问题记录如下: 1.报错信息:“TypeError: list indice ...

  6. Python操作dict时避免出现KeyError的几种方法

    见原文:https://www.polarxiong.com/archives/Python-%E6%93%8D%E4%BD%9Cdict%E6%97%B6%E9%81%BF%E5%85%8D%E5% ...

  7. KeyError:‘uid' Python常见错误

    使用不存在的字典键值 检查字典和要查的内容 如有不正确改正即可

  8. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  9. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

随机推荐

  1. PhoneGap: Android平台入门例子(Hello World)

    Hello World Demo: http://docs.phonegap.com/en/2.0.0/guide_getting-started_android_index.md.html#Gett ...

  2. 我的第一个 JSP (SSH) 个人网站【开源】

    唠叨两句背景 相当长时间没上来发帖了,最近几个月除了完成产品经理一个又一个重复又重复的app开发任务之外,最大的工作莫过于充分利用上笔主的业余时间,系统性地跟李刚同志学习JavaEE的SSH框架开发技 ...

  3. WPF ListView和ListBox等双击事件问题

    上两篇文章中说双击行获取不到当前数据对象问题, http://www.cnblogs.com/ligl/p/5636899.html http://www.cnblogs.com/ligl/p/562 ...

  4. unity3d CarWaypoints插件

    编写初衷: 1.网上没有现成的好用的waypoints插件 2.自己在做一个赛车游戏,如果没有这款插件的话在制作游戏的过程中会被累成狗 3.从来没有接触过插件方面的东西,所以想自己尝试一下 插件用途: ...

  5. Matlab和simulink数据的保存和读取

    文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入.保存工作区可以通过菜单进行,也可以通过命令窗口进行. 1. 保存整个工作区 选择Fil ...

  6. Oracle学习——安装系列

    简介:Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracle数据库系统是目前 ...

  7. innerHeight,clientHeight,offsetHeight,scrollWidth等的区别和用法

    要理解这几个属性,首先要搞明白body,documentElement的区别 1.body是DOM对象里的body子节点,即<body>标签2.documentElement是整个节点树的 ...

  8. 从scrapy使用经历说开来

    关于scrapy这个Python框架,萌萌的官网这么介绍: An open source and collaborative framework for extracting the data you ...

  9. RabbitMQ官方中文入门教程(PHP版) 第四部分:路由(Routing)

    路由(Routing) 在前面的教程中,我们实现了一个简单的日志系统.可以把日志消息广播给多个接收者. 本篇教程中我们打算新增一个功能——使得它能够只订阅消息的一个字集.例如,我们只需要把严重的错误日 ...

  10. directly receive json data from javascript in mvc

    if you send json data to mvc,how can you receive them and parse them more simply? you can do it like ...