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. DOM与CSS样式表

    在前文 <DOM与元素节点内联样式>中我们了解了用 DOM 提供的接口操作元素节点内联样式的方法,今天我们来学习一下如何用 DOM 操作 CSS 样式表. CSS 样式表概况 通过使用 H ...

  2. SQLServer(MSSQL)、MySQL、SQLite、Access相互迁移转换工具 DB2DB v1.4

    最近公司有一个项目,需要把原来的系统从 MSSQL 升迁到阿里云RDS(MySQL)上面.为便于测试,所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面.在百度上找了很多方法,有通过微 ...

  3. 也议 js闭包和ie内存泄露原理

    可以, 但小心使用. 闭包也许是 JS 中最有用的特性了. 有一份比较好的介绍闭包原理的文档. 有一点需要牢记, 闭包保留了一个指向它封闭作用域的指针, 所以, 在给 DOM 元素附加闭包时, 很可能 ...

  4. 利用PhotoShop将Font-Awesome转为图片格式

    介绍如何将Font-Awesome等字体图标转换为图片格式,使用PHOTPSHOP很简单. 网上找了很多,都比较麻烦.别问为什么要这么做,因为你还没遇到需要的时候. 下载Font-Awesome字体库 ...

  5. Android开发自学笔记—1.1(番外)AndroidStudio常用功能介绍

    一.界面区介绍 1.项目组织结构区,用于浏览项目文件,默认Project以Android组织方式展示. 2.设计区,默认在打开布局文件时为设计模式,可直接拖动控件到界面上实现所见即所得,下方的Desi ...

  6. Install Sogoupinyin in Ubuntu

    If you use Ubuntu 15.10,search 'sogou' in Software Center.If you can see sogoupinyin there.You can g ...

  7. 【BZOJ 3150】新Nim游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3105 并不会QwQ 为什么贪心是正确的. 向小神请教了一个弱智问题(小神好神啊OTZ) 然后就写了一 ...

  8. Oracle的自增长主键

    自增长主键 --首先建一个表TEST create table TEST(  NID int PRIMARY KEY,  test1 varchar2(20),  test2 varchar2(20) ...

  9. jar-下载站点

    nutch: http://archive.apache.org/dist/nutch/ jarfire: http://cn.jarfire.org/ solr: http://archive.ap ...

  10. c# 读取嵌入式文件

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflect ...