Maison >développement back-end >Tutoriel Python >Comment puis-je trier naturellement les chaînes avec des nombres intégrés en Python ?
Tri naturel : l'art d'arranger des chaînes avec des nombres intégrés
Trier des chaînes avec des nombres peut être une tâche délicate, mais c'est essentiel pour beaucoup candidatures. Dans cette séance de questions-réponses, nous explorerons une solution qui permet d'obtenir des résultats de tri semblables à ceux d'un humain, vous permettant d'organiser des chaînes telles que "quelque chose1", "quelque chose2" et "quelque chose17" dans un ordre logique.
Le défi :
L'entrée donnée consiste en une liste de chaînes contenant des nombres. Cependant, la méthode sort() par défaut ne parvient pas à les organiser d’une manière logique pour les humains. Par exemple, la liste suivante :
something1 something12 something17 something2 something25 something29
serait triée comme :
something1 something12 something17 something2 something25 something29
La solution : les clés naturelles
La solution réside en utilisant des clés naturelles, une méthode de tri conçue pour la lisibilité humaine. Les clés naturelles traitent les nombres dans les chaînes comme des entités distinctes tout en conservant la structure globale de la chaîne.
Voici une implémentation Python utilisant la fonction natural_keys :
import re def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
Lorsqu'elle est appliquée à la liste d'entrée, la le résultat serait :
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Considérations supplémentaires :
Si vous devez trier les chaînes avec des nombres à virgule flottante, vous pouvez modifier l'expression régulière dans la fonction natural_keys pour faire correspondre les flottants au lieu des entiers.
def natural_keys(text): return [float(c) if c.isdigit() or '.' in c else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Cette amélioration vous permet de trier des chaînes comme :
something1 something2 something1.0 something1.25 something1.105
dans l'ordre suivant :
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
En adoptant le pouvoir des clés naturelles, vous pouvez désormais organiser sans effort chaînes avec des nombres intégrés d'une manière lisible par l'homme, rendant vos tâches de manipulation de données plus efficaces et intuitives.
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!