请原谅我以如此笼统的方式询问,因为我确信它们的性能取决于人们如何使用它们,但在我的情况下,它比我想要验证值的存在时collections.deque
慢得多。collections.defaultdict
我使用了来自 Peter Norvig 的拼写更正,以便根据一小组单词验证用户的输入。由于我没有使用带有词频的字典,所以我一开始使用了简单list
的而不是,但当我注意到单个单词查找大约需要 25 秒时,就将defaultdict
其替换为。deque
令人惊讶的是,这并不比使用 a 快,list
所以我几乎立即返回使用defaultdict
which 返回的结果。
有人可以向我解释这种性能差异吗?
提前致谢
PS:如果你们中的任何一个想要重现我所说的内容,请更改 Norvig 脚本中的以下行。
-NWORDS = train(words(file('big.txt').read()))
+NWORDS = collections.deque(words(file('big.txt').read()))
-return max(candidates, key=NWORDS.get)
+return candidates