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