我想知道作什麼更好: python
d = {'a': 1, 'b': 2} 'a' in d True
要麼: oop
d = {'a': 1, 'b': 2} d.has_key('a') True
in
絕對是pythonic。 性能
事實上, 在Python 3.x中刪除了has_key()
。 spa
根據python 文檔 : code
不推薦使用
has_key()
來支持key in d
的key in d
。 文檔
in
勝手向下,不僅是優雅(而不是被棄用;-)並且在性能,例如: get
$ python -mtimeit -s'd=dict.fromkeys(range(99))' '12 in d' 10000000 loops, best of 3: 0.0983 usec per loop $ python -mtimeit -s'd=dict.fromkeys(range(99))' 'd.has_key(12)' 1000000 loops, best of 3: 0.21 usec per loop
雖然如下觀察並不是老是如此,但您會注意到, 一般 ,在Python中,更快的解決方案是更優雅和Pythonic; 這就是爲何-mtimeit
很是有用 - 它不單單是在這裏和那裏節省一百納秒! - ) it
has_key
是一個字典方法,可是in
能夠處理任何集合,甚至當缺乏__contains__
時, in
將使用任何其餘方法來迭代集合以查找。 io
使用dict.has_key()
if(且僅當)您的代碼須要由早於2.3的Python版本運行(當引入key in dict
中的key in dict
)。 bug