我应该在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

相关文章
相关标签/搜索