B站: 迷途小书童的Note;微信公众号: Dev_Club;个人微信:xituxiaoshutong100

python中避免KeyError的三种方法

Python进阶 迷途小书童 0评论

软硬件环境

  • windows 10 64bit
  • anaconda3 with python 3.7

视频看这里

此处是youtube的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

简介

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]:
喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址