我应该在Python dicts上使用has_key()”还是“in”?

2024-04-26 17:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道最好做什么:

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

或:

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

Tags: keyintruehas
3条回答

in肯定更像是Python。

实际上^{} was removed in Python 3.x

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中,通常是的,更快的解决方案更优雅、更具Python风格;这就是为什么-mtimeit如此有用的原因——这并不是只是在这里或那里节省了100纳秒!-)

根据pythondocs

has_key() is deprecated in favor of key in d.

相关问题 更多 >