Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir un tri naturel des chaînes en Python ?
Tri naturel des chaînes en Python
En Python, trier une liste de chaînes par ordre alphabétique à l'aide de la fonction sorted() par défaut peut ne pas donner le résultat souhaité ordre « naturel ». En effet, sorted() traite les chaînes comme des caractères individuels, ce qui entraîne un ordre non naturel.
Par exemple, considérons la liste de chaînes suivante :
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Tri de cette liste avec sorted() produit ce qui suit :
['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Ceci n'est pas l'ordre de tri naturel, car les nombres qui suivent les lettres sont classés par ordre alphabétique au lieu d'être traités comme faisant partie du nombre.
Pour obtenir un tri naturel des chaînes, vous pouvez utiliser la bibliothèque natsort. Natsort fournit des fonctions qui trient les chaînes de manière plus intuitive, en préservant l'ordre naturel des nombres.
Vous pouvez installer natsort en utilisant pip :
pip install natsort
Pour effectuer un tri naturel sur le donné list, utilisez la fonction natsorted() :
from natsort import natsorted x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] natsorted(x, key=lambda y: y.lower())
Cela produira le tri naturel souhaité order :
['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
La fonction natsort_keygen() peut également être utilisée pour créer une clé de tri :
from natsort import natsort_keygen natsort_key = natsort_keygen(key=lambda y: y.lower()) list.sort(key=natsort_key)
Cela triera la liste de la même manière que natsorted().
En plus de natsorted() et natsort_keygen(), natsort fournit également os_sorted() et os_sort_keygen() fonctions. Ces fonctions vous permettent de trier les listes selon le comportement de tri de l'explorateur de fichiers de votre système d'exploitation, qui peut être différent du comportement par défaut de natsort.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!