【发布时间】:2011-10-19 18:07:42
【问题描述】:
请原谅我以如此笼统的方式提问,因为我确信它们的性能取决于人们如何使用它们,但在我的情况下,collections.deque 比collections.defaultdict 慢得多,因为我想验证是否存在一个值。
我使用spelling correction from Peter Norvig 来根据一小组单词验证用户的输入。由于我没有使用带有词频的字典,所以我最初使用简单的 list 而不是 defaultdict,但当我注意到单个单词查找大约需要 25 秒时,将其替换为 deque。
令人惊讶的是,这并不比使用 list 快,所以我重新使用 defaultdict,它几乎立即返回结果。
有人可以向我解释一下这种性能差异吗?
提前致谢
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
【问题讨论】:
标签: python performance spell-checking deque defaultdict