Maison >développement back-end >Tutoriel Python >Comment puis-je effectuer un tri naturel de chaînes en Python ?

Comment puis-je effectuer un tri naturel de chaînes en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 14:29:11271parcourir

How Can I Perform Natural String Sorting in Python?

Tri naturel des chaînes en Python

Le tri naturel est un algorithme de tri alphabétique qui gère correctement les numéros et les versions des chaînes. Par exemple, il doit trier "elm0" avant "elm10" même si "10" est considéré comme supérieur à "0" dans une comparaison mathématique.

La fonction native sorted() de Python n'effectue pas de tri naturel par défaut. Pour obtenir ce comportement, vous pouvez utiliser la bibliothèque natsort, qui implémente un algorithme de tri naturel.

Pour utiliser natsort, installez-le via :

pip install natsort

Ensuite, en fonction de vos besoins, vous peut soit utiliser la fonction de tri, soit une clé de tri :

Tri Fonction :

from natsort import natsorted

names = ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
natsorted(names)  # ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

Clé de tri :

from natsort import natsort_keygen

names = ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
sort_key = natsort_keygen()
names.sort(key=sort_key)  # ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

Vous pouvez également utiliser les algorithmes de tri insensibles à la casse de natsort si vous le souhaitez :

from natsort import ns

natsorted(names, alg=ns.IGNORECASE)  # ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

La bibliothèque natsort fournit une solution complète pour effectuer un tri naturel en Python, gérer divers formats d'entrée et fournir des options pour le tri insensible à la casse ainsi que la compatibilité avec le tri du navigateur du système de fichiers du système d'exploitation.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn