2011-10-03 57 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。使用​​包。