Python: найти ближайшую строку (из списка) к другая строка

Допустим, у меня есть строка"Hello"и список

words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format']

Как найти n слов, наиболее близких к "Привет"и присутствующих в списке слов?

В этом случае у нас будет ['привет', 'привет', 'привет', 'привет', 'формат'...]

Таким образом, стратегия состоит в том, чтобы отсортировать слова списка от ближайшее слово к самому дальнему.

Я думал о чем-то подобном

word = 'Hello'
for i, item in enumerate(words):
    if lower(item) > lower(word):
      ...

, но это очень медленно работает с большими списками.

UPDATE difflibработает, но очень медленно. (список словсодержит более 630000 слов внутри (отсортировано и по одному в строке)). Таким образом, проверка списка занимает от 5 до 7 секунд для каждого поиска ближайшего слова!

50
задан Laura 4 April 2012 в 10:32
поделиться