Допустим, у меня есть строка
"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 секунд для каждого поиска ближайшего слова!