作者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