Supposons que j'ai une chaîne
"Hello"
et une liste
words = ['hello', 'Hallo', 'hi', 'house', 'key', 'screen', 'hallo','question', 'Hallo', 'format']
Comment puis-je trouver les n mots
les plus proches de "Hello"
et présents dans la liste words
?
Dans ce cas, nous aurions ['hello', 'hallo', 'Hallo', 'hi', 'format'...]
Donc la stratégie est de trier la liste des mots du plus proche au plus éloigné.
J'ai pensé à quelque chose comme ceci
mot = 'Hello'
for i, item in enumerate(words):
if lower(item) > lower(mot):
...
mais c'est très lent avec de grandes listes.
MISE À JOUR difflib
fonctionne mais c'est aussi très lent. (La liste de mots
contient plus de 630000 mots (triés et un par ligne)). Donc vérifier la liste prend 5 à 7 secondes pour chaque recherche de mot le plus proche !