软硬件环境
windows 10 64bit
anaconda3 with python 3.7
简介
在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]: