Python中避免KeyError的三种方法

软硬件环境

  • windows 10 64bit

  • anaconda3 with python 3.7

简介

python中获取字典dictkeyvalue时,如果key不存在,就会触发KeyError错误,如下

In [1]: aDict = {"p":"python", "j":"java", "g":"golang", "s":"swift"}


In [2]: aDict['r']
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-2-09bddfcc18bc> in <module>
----> 1 aDict['r']


KeyError: 'r'


In [3]:

以下介绍几种可以避免上述KeyError的方法

方法一

首先判断下key是否存在,如果存在,则去获取value

In [4]: if 'r' in aDict:
   ...:     print(aDict['r'])
   ...: else:
   ...:     print('r not in aDict.')
   ...:
r not in aDict.


In [5]:

方法二

利用dict内置的get(key[,default])方法,如果key存在,则返回其value,否则返回default。使用这个方法永远不会触发KeyError

In [5]: aDict.get('r')


In [6]:

默认情况下,default是空。当然你可以去修改default

In [6]: aDict.get('r', 'not in aDict.')
Out[6]: 'not in aDict.'


In [7]:

方法三

dict的派生类中增加__missing__()方法,当key不存在时,会转向__missing__()方法处理,而不触发KeyError。看下面的示例

In [11]: class Languages(dict):
    ...:     def __missing__(self, key):
    ...:         return 'key not exist.'
    ...:


In [12]: l = Languages(aDict)


In [13]: l['r']
Out[13]: 'key not exist.'


In [14]:
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值