在字典中搜索比在列表中搜索更快?

时间:2015-08-02 22:28:09

标签: python list search dictionary time-complexity

我是Python新手,我注意到有两种方法可以在字典中搜索密钥:

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

if 1 in d.keys(): 

我认为它们是相同的,但由于我必须在一个包含10万个元素的字典中搜索,我已经看到第二种方式需要花费太多时间。我一直在寻找并读到这是因为d.keys()返回一个列表然后搜索元素的时间复杂度是O(n)但是字典中搜索的复杂度是O(1)。这是真的吗?

1 个答案:

答案 0 :(得分:1)

是的,这是真的。大多数字典都是作为哈希映射实现的。所以你有O(1)进行访问。这比列表的O(n)快得多。

为什么只需要O(1)? 因为哈希映射会对每个键进行哈希处理,并将其放入生成的桶中。如果您搜索某个键,它将对您的输入进行哈希处理并查看是否存在值。如果有值则返回它,否则您会收到通知,表示没有输入。就像快速浏览一样......

如果你对这样的东西感兴趣,你应该看看"算法的介绍"通过cormen