2011-10-03 58 views
3

给定一个文本,它被分成一个单词列表,我想查找单词词典中的每个单词,这也是从文本文件中读取的,并且split('\n')python:快速词典查找通配符*

而不是检查每个单词是否包含在字典中(这是令人毛骨悚然的慢)我需要选择基于通配符的元素列表*('*'在最后,即不需要permuterm解决方案)。例如,解决方案应该选择以'dep'开头的所有字典元素,而不必遍历整个字典列表。

在这种情况下,性能是至关重要的。我虽然B树的...但

  1. 什么是最佳的解决方案和数据类型Python中的快速实现。
  2. 请提供代码示例
+1

好像你需要一些[trie](http://en.wikipedia.org/wiki/Trie)包 – Voo

+0

通配符的东西肯定会慢一些。字典使用散列(访问时间不变)。 – JBernardo

+0

@JBernardo:不,它只是意味着元素必须以'星'之前的任何东西开始 –

回答

2

使用dawg,在空间浪费方面比Trie更有效率。有几个python实现,但一开始看看here

+0

来自网站:“...如果你不关心记忆或速度[原文如此!],只需存储你的话”...它更快? –

+0

该dawg肯定更快。这个网站的引用很讽刺。 “只需将你的文字存储在SQL数据库中,或者在云中启动100台机器,我不介意,给你更多的权力!” – hymloth

2

你想要一个trie。使用​​包。