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
Susan Sarandonoriginal
2024-11-02 17:38:29524parcourir

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)]

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]))

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)

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]))

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]))

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