协慌网

登录 贡献 社区

我应该在 Python dicts 上使用'has_key()' 或'in' 吗?

我想知道做什么更好:

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

要么:

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

答案

in绝对是 pythonic。

事实上, 在 Python 3.x 中删除了has_key()

in胜手向下,不只是优雅(而不是被弃用;-) 而且在性能,例如:

$ 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非常有用 - 它不仅仅是在这里和那里节省一百纳秒! - )

根据 python 文档

不推荐使用has_key()来支持key in dkey in d