J'ai une liste de chaînes Python, par ex. initialisé comme suit:Recherche des chaînes "les plus proches" dans une liste Python (par ordre alphabétique)
l = ['aardvark', 'cat', 'dog', 'fish', 'tiger', 'zebra']
Je voudrais tester une chaîne d'entrée contre cette liste, et trouver la « chaîne le plus proche en dessous » et la « chaîne le plus proche au-dessus », par ordre alphabétique et indépendamment de la casse (ie pas phonétiques , juste a<b
etc). Si l'entrée existe dans la liste, les deux "ci-dessous" et "ci-dessus" devraient retourner l'entrée.
Plusieurs exemples:
Input | Below | Above
-------------------------------
bat | aardvark | cat
aaa | None | aardvark
ferret | dog | fish
dog | dog | dog
Quelle est la plus élégante façon d'y parvenir en Python? (actuellement je suis itérer sur une liste triée en utilisant une boucle for)
Pour clarifier davantage: Je suis intéressé par la simple comparaison alphabétique du dictionnaire, pas n'importe quoi de fantaisie comme Levenshtein ou phonétique.
Merci
+1 pour la solution propre, mais aussi le nom :) choix –
Vous devez prendre soin de le cas où la liste est vide: si l'index == 0: gauche = Aucun autre : gauche = botte de foin [ index 1] si l'index == len (botte de foin): droite = Aucun autre : droite = botte de foin [index] retour gauche, à droite – tonfa
Désolé, je pensais qu'il était possible de mettre le code à l'intérieur des commentaires. – tonfa