technique to enter text using a mobile phone keypad (T9 dictionary-based disambiguation)
bearophileHUGS at lycos.com
bearophileHUGS at lycos.com
Wed Aug 9 16:14:07 EDT 2006
Justin Azoff:
> It takes a second or two to read the list of words in,
Nice solution. If you want to speed up the initialization phase you may
use something like this (it requires a bit more memory, because lines
contains all the words).
Note that the words and numbers have the same sorting order, so you may
use this to speed up the sorting a little, like doing it on words only
(that is the lines list), but for small dictionaries sort is fast
enough already, so this isn't much important.
Note: you have to add another 9 to numbers, because z too is associated
to 9.
import string
class Phone:
def __init__(self):
numbers = '22233344455566677778889999'
convtable = string.maketrans(string.lowercase, numbers)
lines =
file("/usr/share/dict/words").read().lower().splitlines()
words = []
for line in lines:
word = line.strip()
nums = word.translate(convtable)
words.append( (nums, word) )
words.sort()
self.dict = words
p = Phone()
Bye,
bearophile
More information about the Python-list
mailing list