Скажем, у меня есть string
"Hello"
и список
words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format']
Как я могу найти n words
, которые наиболее близки к "Hello"
и присутствуют в списке words
?
В этом случае мы имели бы ['hello', 'hallo', 'Hallo', 'hi', 'format'...]
Итак, стратегия заключается в сортировке слов списка из ближайшего слова до самого дальнего.
Я подумал о чем-то вроде этого
word = 'Hello'
for i, item in enumerate(words):
if lower(item) > lower(word):
...
но он очень медленный в больших списках.
UPDATE
difflib
работает, но он очень медленный. (words list
содержит 630000+ слов внутри (отсортировано и по одному на строку)). Поэтому проверка списка занимает от 5 до 7 секунд для каждого поиска ближайшего слова!