key()' or 'in'?

I wonder what is better to do:

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

or:

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

in is definitely more pythonic.

In fact has_key() was removed in Python 3.x.


in wins hands-down, not just in elegance (and not being deprecated;-) but also in performance, eg:

$ 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

While the following observation is not always true, you'll notice that usually, in Python, the faster solution is more elegant and Pythonic; that's why -mtimeit is SO helpful -- it's not just about saving a hundred nanoseconds here and there!-)


According to python docs:

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

链接地址: http://www.djcxy.com/p/23936.html

上一篇: 如何删除导出的环境变量?

下一篇: key()'或'in'?