我想知道作什么更好: 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