Diciamo che ho un string
"Hello"
e un elencoPython: trovare più vicino stringa (da una lista) ad un'altra stringa
words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format']
Come posso trovare il n words
che sono più vicino a "Hello"
e presente nella lista words
?
In questo caso, avremmo ['hello', 'hallo', 'Hallo', 'hi', 'format'...]
Quindi la strategia è quello di ordinare le parole della lista dalla parola più vicina alla più lontana.
ho pensato a qualcosa di simile
word = 'Hello'
for i, item in enumerate(words):
if lower(item) > lower(word):
...
ma è molto lento in grandi liste.
UPDATE difflib
funziona ma è anche molto lento. (words list
contiene 630000+ parole all'interno (ordinate e una per riga)). Quindi controllare l'elenco richiede da 5 a 7 secondi per ogni ricerca della parola più vicina!
Forse siete alla ricerca di qualcosa come la modifica a distanza o Levinshtein distanza? – tripleee
Esattamente, questo dipende in gran parte da cosa è la tua definizione di "_closest_". –
Le 630.000 parole sono ordinate? Sono in un file, una parola per riga? –