Comment trier une liste de tuple par rapport à un élément donnée en python ?

Published: 05 février 2019

DMCA.com Protection Status

Considérons une liste de tuple générée aléatoirement, comme dans cet exemple:

>>> import random
>>> l = [(random.randint(0, 100),random.randint(0, 100)) for i in range(10)]
>>> l
[(69, 38), (92, 75), (37, 89), (64, 52), (70, 72), (84, 44), (13, 0), (20, 67), (38, 56), (40, 98)]

pour trier la liste par rapport au premier élément, on peut directement appliquer sorted():

>>> sorted(l)
[(13, 0), (20, 67), (37, 89), (38, 56), (40, 98), (64, 52), (69, 38), (70, 72), (84, 44), (92, 75)]

ou

>>> sorted(l, key=lambda x: x[0])
[(13, 0), (20, 67), (37, 89), (38, 56), (40, 98), (64, 52), (69, 38), (70, 72), (84, 44), (92, 75)]

pour trier la liste par rapport au deuxième élément:

>>> sorted(l, key=lambda x: x[1])
[(13, 0), (69, 38), (84, 44), (64, 52), (38, 56), (20, 67), (70, 72), (92, 75), (37, 89), (40, 98)]

Note; marche aussi avec sort(), la difference est que cette fonction modifie directement la liste:

>>> l.sort(key=lambda x: x[0])
>>> l
[(13, 0), (20, 67), (37, 89), (38, 56), (40, 98), (64, 52), (69, 38), (70, 72), (84, 44), (92, 75)]
>>> l.sort(key=lambda x: x[1])
>>> l
[(13, 0), (69, 38), (84, 44), (64, 52), (38, 56), (20, 67), (70, 72), (92, 75), (37, 89), (40, 98)]

Références