软硬件环境
- windows 10 64bit
- anaconda3 with python 3.7
视频看这里
此处是 youtube
的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。
简介
在 python
中获取字典 dict
的 key
和 value
时,如果 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]: