Я хочу получить наиболее подходящее слово из enchant offer ()
. Есть ли какие-нибудь лучший способ сделать это. Я чувствую, что моя функция неэффективна, когда дело доходит до проверки большого набора слов в диапазоне от 100 тыс. и более.
Проблема с ] enchant offer ()
:
>>> import enchant >>> d.suggest("prfomnc") ['prominence', 'performance', 'preform', 'Provence', 'preferment', 'proforma']
Моя функция для получения подходящего слова из набора предлагаемых слов:
import enchant, difflib word="prfomnc" dict,max = {},0 a = set(d.suggest(word)) for b in a: tmp = difflib.SequenceMatcher(None, word, b).ratio(); dict[tmp] = b if tmp > max: max = tmp print dict[max] Result: performance
Обновлено:
если я получаю несколько ключей, то есть такое же difflib ratio ()
значений, я использую многоключевой словарь. Как объясняется здесь: http://code.activestate.com/recipes/440502-a-dictionary-with-multiple-values-for-each-key/