J'ai une liste de listes. Par exemple,
[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]
Si je voulais trier la liste extérieure par le champ chaîne de caractères des listes intérieures, comment le feriez-vous en python ?
J'ai une liste de listes. Par exemple,
[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]
Si je voulais trier la liste extérieure par le champ chaîne de caractères des listes intérieures, comment le feriez-vous en python ?
C'est un travail pour itemgetter
>>> from operator import itemgetter
>>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> sorted(L, key=itemgetter(2))
[[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]
Il est également possible d'utiliser une fonction lambda ici, cependant la fonction lambda est plus lente dans ce cas simple
@bzupnick, utiliser key=lambda x:x[2].casefold()
. Si votre Python n'est pas assez récent, utilisez simplement .lower()
au lieu de .casefold()
X = [[[5,3],1.0345],[[5,6],5.098],[[5,4],4.89],[[5,1],5.97]] Avec une liste comme celle-ci, peut-on trier en utilisant itemgetter() par rapport aux éléments dans x[0][1] ?
@qun, "in place" signifie que la mémoire de l'ancienne liste est réutilisée pour la liste triée. "not in place" signifie que l'ancienne liste reste inchangée et qu'une nouvelle liste est créée.
X = [[[5,3],1.0345],[[5,6],5.098],[[5,4],4.89],[[5,1],5.97]] Avec une liste comme celle-ci, comment trier par rapport aux éléments de x[0][1] ?
Je pense que cette réponse est très importante. Je pense que les personnes qui essaient de trier par des index de tableaux internes tomberont ici mais que les personnes qui cherchent à trier par de MULTIPLES index de tableaux internes commenceront ici et votre réponse m'a permis de voir que itemgetter le fera pour vous !
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.
7 votes
Lien vers le tutoriel : wiki.python.org/moin/HowTo/Tri
3 votes
Lien utile : stackoverflow.com/questions/18142090/