Je voudrais trier la liste suivante de listes par le quatrième élément (l'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 ceci? Je vous remercie!
unsorted_list.sort(key=lambda x: x[3])
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']]
La lambda
renvoie le quatrième élément de chacune des listes intérieures et la fonction sorted
l'utilise 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 disposiez d'une représentation sous forme de chaîne des nombres, car ils sont voués à échouer quelque part pour les nombres de 2 chiffres ou plus)
>>> 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']]