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足够聪明,可以in在dict某种哈希方式之前翻译关键字,我找不到任何关于此的正式声明.
那两者之间真的有效率差异吗?
谢谢.
这两个操作都做同样的事情:检查密钥中dict中实现的哈希表.也不会迭代整个字典.请记住,for x in dict不同于if x in dict.它们都使用in关键字,但操作不同.
该in关键字上变成一个电话dict.__contains__,但该字典可以实现它喜欢.
如果这些操作的时间存在差异,那么它将非常小,并且将与函数调用开销有关has_key.
顺便说一句,一般的偏好是key in dict作为一个更明确的意图表达dict.has_key(key).请注意,速度与首选项无关.除非您知道自己处于关键路径,否则可读性比速度更重要.
| 归档时间: |
|
| 查看次数: |
5209 次 |
| 最近记录: |