Maison  >  Article  >  développement back-end  >  Comment réaliser un tri par ordre naturel en Python comme le natsort de PHP ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-05 14:57:02885parcourir

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>

Ce tri standard entraînera :

['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']

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>

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

<code class="python">l.sort(key=natsort_key)</code>

La sortie sera be :

['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']

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>

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!

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