我應該在Python dicts上使用'has_key()'或'in'嗎?

我想知道作什麼更好: python

d = {'a': 1, 'b': 2}
'a' in d
True

要麼: oop

d = {'a': 1, 'b': 2}
d.has_key('a')
True

#1樓

in絕對是pythonic。 性能

事實上, 在Python 3.x中刪除了has_key()spa


#2樓

根據python 文檔code

不推薦使用has_key()來支持key in dkey in d文檔


#3樓

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


#4樓

has_key是一個字典方法,可是in能夠處理任何集合,甚至當缺乏__contains__時, in將使用任何其餘方法來迭代集合以查找。 io


#5樓

使用dict.has_key() if(且僅當)您的代碼須要由早於2.3的Python版本運行(當引入key in dict中的key in dict )。 bug

相關文章
相關標籤/搜索