Trier une liste de tuples en Python #
Utiliser le key
de l’argument sorted()
pour trier une liste de tuples,
par exemple. sorted_list = sorted(list_of_tuples, key=lambda t: t[1])
. La fonction
triera la liste des tuples par l’élément du tuple à l’indice spécifié.
list_of_tuples = [(1, 100), (2, 50), (3, 75)]
sorted_list = sorted(list_of_tuples, key=lambda t: t[1])
print(sorted_list)
sorted_list_descending = sorted(
list_of_tuples,
key=lambda t: t[1],
reverse=True
)
print(sorted_list_descending)
La fonction sorted
prend un itérable et renvoie une nouvelle liste triée à partir des éléments de l’itérable.
La fonction prend une option key
qui peut être utilisé pour trier selon différents critères.
list_of_tuples = [(1, 100), (2, 50), (3, 75)]
sorted_list = sorted(list_of_tuples, key=lambda t: t[1])
print(sorted_list)
Le site key
peut être défini comme une fonction déterminant les critères de tri.
de tri.
L’exemple trie la liste de tuples par le deuxième élément (indice 1
) dans chaque
tuples.
Si vous avez besoin de trier la liste des tuples de manière descendante (du plus grand au plus petit), définissez le paramètre
l’adresse reverse
à true
dans l’appel à la fonction sorted()
fonction.
list_of_tuples = [(1, 100), (2, 50), (3, 75)]
sorted_list_descending = sorted(
list_of_tuples,
key=lambda t: t[1],
reverse=True
)
print(sorted_list_descending)
Vous pouvez également utiliser cette approche pour trier une liste de tuples par plusieurs index.
list_of_tuples = [(1, 3, 100), (2, 3, 50), (3, 2, 75)]
sorted_list = sorted(
list_of_tuples,
key=lambda t: (t[1], t[2])
)
print(sorted_list)
L’exemple trie la liste de tuples par les éléments à l’indice 1
et 2
dans
chaque tuple.
Puisque le deuxième élément du troisième tuple est le plus bas, il est déplacé vers l’avant.
avant.
Les deuxièmes éléments du premier et du deuxième tuples sont égaux (tous les deux 3
), donc les troisièmes éléments sont comparés et puisque 50
est inférieur à 100
il prend la deuxième place.
Une alternative à l’utilisation d’une fonction lambda est d’utiliser la fonction operator.itemgetter()
pour spécifier l’index par lequel vous voulez trier.
from operator import itemgetter
list_of_tuples = [(1, 100), (2, 50), (3, 75)]
sorted_list = sorted(list_of_tuples, key=itemgetter(1))
print(sorted_list)
Le site
operator.itemgetter
renvoie un objet appelable qui récupère l’élément à l’index spécifié.
Par exemple, x = itemgetter(1)
et ensuite appeler x(my_tuple)
retourne
my_tuple[1]
.
Vous pouvez également utiliser cette approche pour trier par plusieurs indices.
from operator import itemgetter
list_of_tuples = [(1, 3, 100), (2, 3, 50), (3, 2, 75)]
sorted_list = sorted(list_of_tuples, key=itemgetter(1, 2))
print(sorted_list)
Utilisation de la fonction itemgetter
est plus rapide qu’une fonction lambda, mais elle est aussi un peu plus implicite.
mais elle est aussi un peu plus implicite.
Vous pouvez également utiliser la fonction list.sort()
méthode.
Utilisez la key
de l’argument list.sort()
pour trier une liste de tuples en
place, par exemple list_of_tuples.sort(key=lambda t: t[1])
. Le site list.sort()
méthode
permet de trier la liste des tuples en fonction de l’élément du tuple à l’indice spécifié.
list_of_tuples = [(1, 100), (2, 50), (3, 75)]
list_of_tuples.sort(key=lambda t: t[1])
print(list_of_tuples)
La méthode list.sort
trie la liste en place et n’utilise que la méthode <
comparaisons entre les éléments.
La méthode prend les 2 arguments suivants, uniquement des mots-clés :
Nom | Description |
---|---|
clé | une fonction qui prend un argument et qui est utilisée pour extraire une clé de comparaison de chaque élément de la liste. |
inverse | Une valeur booléenne indiquant si chaque comparaison doit être inversée. |
L’autre argument du mot-clé, le sort
prend est reverse
.
list_of_tuples = [(1, 100), (2, 50), (3, 75)]
list_of_tuples.sort(key=lambda t: t[1], reverse=True)
print(list_of_tuples)
Notez que le list.sort
mute la liste en place et renvoie None
.
Vous pouvez utiliser l’option sorted()
si vous avez besoin d’une nouvelle instance de liste plutôt que de
une mutation en place.