Digamos que tengo un string
"Hello"
y una listaPython: encontrar la cadena más cercano (de una lista) a otra cadena
words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format']
¿Cómo puedo encontrar el n words
que son los más cercanos a "Hello"
y en la lista words
?
En este caso, tendríamos ['hello', 'hallo', 'Hallo', 'hi', 'format'...]
Así que la estrategia es ordenar las palabras de la lista de la palabra más cercana a la más lejana.
pensé en algo como esto
word = 'Hello'
for i, item in enumerate(words):
if lower(item) > lower(word):
...
pero es muy lento en grandes listas.
ACTUALIZACIÓN difflib
funciona pero también es muy lento. (words list
tiene más de 630000 palabras adentro (ordenadas y una por línea)). ¡Así que consultar la lista lleva de 5 a 7 segundos para cada búsqueda de palabra más cercana!
Quizás esté buscando algo así como la distancia de edición o Levinshtein distancia? – tripleee
Exactamente, esto depende en gran medida de lo que sea su definición de '_closest_'. –
¿Están las 630,000 palabras ordenadas? ¿Están en un archivo, una palabra por línea? –