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!