Comment réaliser un tri par ordre naturel en Python comme le natsort de PHP ?

Patricia Arquette
Libérer: 2024-11-05 14:57:02
original
949 Les gens l'ont consulté

How to Achieve Natural Order Sorting in Python Like PHP's natsort?

L'équivalent de Python au natsort de PHP pour le tri par ordre naturel

Une question fréquemment posée en Python est de savoir comment trier une liste dans l'ordre naturel, similaire à la fonction natsort de PHP. Contrairement à un tri standard, l'ordre naturel considère les caractères numériques comme des nombres plutôt que comme des chaînes.

Par exemple, envisagez de trier une liste de noms de fichiers :

<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort()</code>
Copier après la connexion

Ce tri standard entraînera :

['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
Copier après la connexion

Cependant, pour obtenir un tri par ordre naturel, Python fournit une fonction clé qui convertit les chaînes en tuples numériques si possible. Cela permet des comparaisons numériques appropriées.

Voici un exemple d'implémentation :

<code class="python">import re

def natsort_key(s):
    return map(int, re.findall(r'(\d+)', s))</code>
Copier après la connexion

L'application de cette clé pendant le tri donne l'ordre naturel souhaité :

<code class="python">l.sort(key=natsort_key)</code>
Copier après la connexion

La sortie sera be :

['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']
Copier après la connexion

Alternativement, si vous avez besoin d'un tri insensible à la casse, une implémentation plus complète peut être utilisé :

<code class="python">def natcasecmp(a, b):
    return natcmp(a.lower(), b.lower())</code>
Copier après la connexion

Ceci fournit un tri par ordre naturel insensible à la casse.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal