Énoncé du problème
Le tri lexicographique des chaînes ne donne pas toujours l'ordre souhaité. Par exemple, les listes contenant des valeurs numériques peuvent être triées par chiffre plutôt que par nombre entier. Ce problème provient du mécanisme de tri par défaut, qui traite chaque caractère indépendamment.
Fonction intégrée
Bien que Python ne fournisse pas de fonction intégrée spécifiquement pour les caractères naturels tri des chaînes, il existe des bibliothèques tierces qui peuvent résoudre ce problème. L'une de ces bibliothèques est natsort, qui propose diverses méthodes pour effectuer le tri naturel.
Bibliothèque natsort
Natsort propose deux approches principales pour le tri naturel : utiliser une fonction de tri ou un clé de tri.
Fonction de tri
Pour utiliser la natsort, commencez par l'importer comme suit :
from natsort import natsorted
Vous pouvez ensuite trier une liste de chaînes à l'aide de cette fonction :
x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] sorted_list = natsorted(x, key=lambda y: y.lower())
Vous pouvez également spécifier un algorithme à ignorer sensibilité à la casse :
sorted_list = natsorted(x, alg=ns.IGNORECASE)
Clé de tri
Si vous devez trier une liste de chaînes à l'aide d'une clé de tri, importez ce qui suit :
from natsort import natsort_keygen
La création d'une clé de tri implique de spécifier une fonction pour extraire la clé de chaque chaîne, qui est généralement utilisée lorsque les chaînes sont intégrées données. Par exemple :
keygen = natsort_keygen(key=lambda y: y.lower()) sorted_list = sorted(l1, key=keygen)
Autres options
Pour des scénarios de tri naturel plus complexes, la bibliothèque natsort fournit des fonctionnalités supplémentaires et des options de personnalisation. Veuillez consulter la documentation de la bibliothèque pour plus de détails. De plus, depuis la version 7.1.0, natsort propose une fonction os_sorted pour trier les chaînes dans l'ordre du navigateur du système de fichiers local.
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!