Tri d'une liste Python par plusieurs champs
Tri d'une liste Python par un seul champ est une tâche courante, mais que faire si vous en avez besoin trier par plusieurs champs ?
Considérez la liste suivante créée à partir d'un CSV trié fichier :
list1 = sorted(csv1, key=operator.itemgetter(1))
Ceci trie la liste selon le deuxième champ. Cependant, que se passe-t-il si vous souhaitez trier d'abord par le premier champ, puis par le deuxième champ ?
La solution est d'utiliser une fonction lambda comme argument clé de la fonction sorted() . Une fonction lambda est une fonction anonyme qui permet de définir un critère de tri simple. Dans ce cas, la fonction lambda prend un seul argument, qui représente un élément de la liste, et renvoie un tuple contenant les deux champs par lesquels vous souhaitez trier.
Par exemple, pour trier la liste par le premier et deuxième champs, vous pouvez utiliser la fonction lambda suivante :
sorted_list = sorted(list1, key=lambda x: (x[0], x[1]))
Cette fonction lambda renvoie un tuple contenant les premier et deuxième champs de l'élément de liste. La liste est ensuite triée par ce tuple, ce qui entraîne le tri de la liste d'abord par le premier champ puis par le deuxième champ.
Vous pouvez également utiliser les fonctions lambda pour trier par un champ ascendant et un autre décroissant. Par exemple, pour trier la liste par premier champ croissant et deuxième champ décroissant, vous pouvez utiliser la fonction lambda suivante :
sorted_list = sorted(list1, key=lambda x: (x[0], -x[1]))
Cette fonction lambda renvoie un tuple contenant le premier champ de l'élément de liste et le négatif du deuxième champ. La liste est ensuite triée par ce tuple, ce qui entraîne le tri de la liste par le premier champ ascendant et le deuxième champ décroissant.
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!