Maison > développement back-end > Tutoriel Python > Comment inverser l'ordre de tri pour des clés spécifiques dans la fonction « sorted() » de Python ?

Comment inverser l'ordre de tri pour des clés spécifiques dans la fonction « sorted() » de Python ?

Susan Sarandon
Libérer: 2024-11-02 17:38:29
original
592 Les gens l'ont consulté

How to Reverse the Sort Order for Specific Keys in Python's `sorted()` Function?

Tri d'une liste avec plusieurs clés en Python : une dans l'ordre inverse

Lors de l'organisation d'une liste avec plusieurs critères, le tri intégré de Python () fournit un outil polyvalent. Cependant, il ne répond pas toujours à l'exigence d'inverser l'ordre de tri pour une clé spécifique.

Comprendre le problème

Considérons un scénario dans lequel nous avons une liste de tuples contenant deux éléments :

myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]
Copier après la connexion

On souhaitera peut-être trier cette liste à l'aide de deux clés : l'une étant insensible à la casse (y[0].lower()) et l'autre dans l'ordre inverse (y[1] ). L'utilisation du code suivant permet d'obtenir le premier :

sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))
Copier après la connexion

Cependant, pour inverser l'ordre de tri, nous pouvons ajouter l'argument reverse = True :

sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]), reverse = True)
Copier après la connexion

Malheureusement, cela inverserait le tri commande pour les deux clés.

Résoudre le problème

Pour répondre à cette exigence, nous pouvons exploiter la puissance des fonctions lambda en Python. En introduisant un signe négatif (-) avant l’un des termes de la clé de tri, nous inversons effectivement l’ordre de tri pour cette clé particulière. Par exemple :

sortedList = sorted(myList, key = lambda y: (y[0].lower(), -y[1]))
Copier après la connexion

Dans ce code, le -y[1] inverse l'ordre de tri de la deuxième clé (y[1]), tandis que la première clé (y[0].lower() ) reste dans l'ordre croissant sans tenir compte de la casse.

Exemples supplémentaires

Voici quelques autres exemples avec différentes combinaisons d'ordres de tri :

# Reverse both keys
sortedList = sorted(myList, key = lambda y: (-y[0].lower(), -y[1]))

# Reverse only the first key
sortedList = sorted(myList, key = lambda y: (-y[0].lower(), y[1]))
Copier après la connexion

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal