Python: znajdź najbliższy ciąg (z listy) do innego łańcucha
Powiedzmy, że mamstring
"Hello"
i lista
<code>words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format'] </code>
Jak mogę znaleźćn words
które są najbliżej"Hello"
i obecny na liściewords
?
W tym przypadku mielibyśmy['hello', 'hallo', 'Hallo', 'hi', 'format'...]
Tak więc strategia polega na sortowaniu słów listy od najbliższego słowa do najdalszego.
Myślałem o czymś takim
<code>word = 'Hello' for i, item in enumerate(words): if lower(item) > lower(word): ... </code>
ale na dużych listach jest bardzo wolno.
AKTUALIZACJA difflib
działa, ale jest też bardzo powolny. (words list
ma 630000+ słów w środku (posortowane i po jednym na linię)). Sprawdzanie listy zajmuje od 5 do 7 sekund na każde wyszukiwanie najbliższego słowa!