Python中dict.has_key和dict键之间的效率差异

Der*_*ang 7 python performance dictionary

可能重复:
'has_key()'或'in'?

在Python中,有两种方法可以决定a key是否在dict:

if dict.has_key(key)if key in dict

有人告诉我,第二个比第一个慢,因为in关键字使表达式在dict上迭代,所以它会比has_key替代更慢,显然使用hash来做出决定.

我非常怀疑差异,因为我认为Python足够聪明,可以indict某种哈希方式之前翻译关键字,我找不到任何关于此的正式声明.

那两者之间真的有效率差异吗?

谢谢.

Ned*_*der 9

这两个操作都做同样的事情:检查密钥中dict中实现的哈希表.也不会迭代整个字典.请记住,for x in dict不同于if x in dict.它们都使用in关键字,但操作不同.

in关键字上变成一个电话dict.__contains__,但该字典可以实现它喜欢.

如果这些操作的时间存在差异,那么它将非常小,并且将与函数调用开销有关has_key.

顺便说一句,一般的偏好是key in dict作为一个更明确的意图表达dict.has_key(key).请注意,速度与首选项无关.除非您知道自己处于关键路径,否则可读性比速度更重要.

  • ....所有这一切,此外,'has_key()'已弃用,不应再使用.:) (2认同)