126 votes

Python - Comment trier une liste de listes par le quatrième élément de chaque liste ?

Je voudrais trier la liste suivante de listes par le quatrième élément (le nombre entier) dans chaque liste individuelle.

unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]

Comment puis-je faire ? Merci.

217voto

Taymon Points 8103
unsorted_list.sort(key=lambda x: x[3])

70voto

Sukrit Kalra Points 11349

Utilisez sorted() avec un key comme suit -

>>> unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
>>> sorted(unsorted_list, key = lambda x: int(x[3]))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]

Le site lambda renvoie le quatrième élément de chacune des listes internes et la fonction sorted utilise cette fonction pour trier ces listes. Cela suppose que int(elem) n'échouera pas pour la liste.

Ou utilisez itemgetter (Comme l'a souligné le commentaire d'Ashwini, cette méthode ne fonctionnerait pas si vous avez des représentations de chaînes de caractères pour les nombres, car elles sont vouées à échouer quelque part pour les nombres à plus de 2 chiffres).

>>> from operator import itemgetter
>>> sorted(unsorted_list, key = itemgetter(3))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X