看板 Python 關於我們 聯絡資訊
我想做一個英文字典的搜尋程式, 如果說單字與解釋都存在文字檔, 像下面這樣: apple:fruit boy:animal cat:animal 然後裝在dict裡面變成這樣: english_dict = {'apple': 'fruit', 'boy': 'animal', 'cat': 'animal'} 我想問,如果有好幾萬比單字,全放入dict裡面查找, 這樣不會變得很慢嗎? 還是說有其他比較好的方法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.171.250.105
mikapauli:幾萬筆對電腦來說跟本不成問題吧? 01/04 21:37
mikapauli:一種方法是一個個字母來找 01/04 21:42
mikapauli:例如把apple的資訊放到 01/04 21:46
mikapauli:english_dict[97][112][112][108][101][0] 01/04 21:46
uranusjr:一開始把資料結構載入的時候會慢, 載入後就快了 01/04 21:47
uranusjr:不過如果你的資料就只有上面那樣, 那速度應該不是問題 01/04 21:47
kdjf:四樓的ram夠用嗎...? 01/05 10:25
kdjf:剛剛試了一下,生成11881373(11M-item)的dict花了10sec, 01/05 10:26
kdjf:lookup也只花us (不過dict的大小.... 1G) 01/05 10:31
kdjf:然後如果hash對你來說還是太慢的話,你也只剩下自己寫c-module 01/05 10:36
kdjf:可以解決了 01/05 10:36
chigi:dict就是一種hash的應用, 利用空間換取速度 要是用list去做 01/05 11:45
chigi:資料稍微大一點是會吐血的 O(n)和O(1)基本上差異還是很大 01/05 11:46
tgrk:謝謝,我大概了解了,我先自己試試dict好了 01/05 15:55
tgrk:如果太耗記憶體那就只能上C了@@ 01/05 16:01
a761007:如果搭配nosql db會不會好些? 01/06 00:24
linhomeyeu:redis了吧 01/06 03:50
plover:database,前端用 dict 做 cache (幻想中) 01/06 14:53
DreamLoser:dict就是python的harsh table..就是專門這種case的 01/06 21:44
kdjf:沒學過資結,不過我猜能比hash還好的結構不多了 01/06 22:40
bob123:試試 sqlite 01/06 23:39
fjm31714:trie? 01/07 11:05