在Python字典中我应该使用'has_key()'还是'in'?

1121 投票
9 回答
876508 浏览
提问于 2025-04-15 13:50

给定:

>>> d = {'a': 1, 'b': 2}

以下哪种方式是检查 'a' 是否在 d 中的最佳方法?

>>> 'a' in d
True
>>> d.has_key('a')
True

9 个回答

118

根据Python的官方文档

has_key()这个方法已经不推荐使用了,建议用 key in d来代替。

274

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 非常有用——它不仅仅是为了节省几百纳秒的时间!-)

1617

in 这个用法绝对更符合 Python 的风格。

实际上,has_key() 在 Python 3.x 中已经被去掉了

撰写回答