¿Cómo ordenar una lista de listas por un índice específico de la lista interna?

Resuelto oldspice asked hace 14 años • 12 respuestas

Tengo una lista de listas. Por ejemplo,

[
[0,1,'f'],
[4,2,'t'],
[9,4,'afsd']
]

Si quisiera ordenar la lista externa por el campo de cadena de las listas internas, ¿cómo lo harías en Python?

oldspice avatar Nov 14 '10 04:11 oldspice
Aceptado

Este es un trabajo para el captador de artículos.

>>> 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']]

También es posible utilizar una función lambda aquí, sin embargo, la función lambda es más lenta en este caso simple.

John La Rooy avatar Nov 13 '2010 21:11 John La Rooy

en su lugar

>>> l = [[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']]
>>> l.sort(key=lambda x: x[2])

no en su lugar usando ordenado:

>>> sorted(l, key=lambda x: x[2])
mouad avatar Nov 13 '2010 22:11 mouad

Itemgetter le permite ordenar por múltiples criterios/columnas:

sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1))
fider avatar Mar 21 '2013 10:03 fider

También se pueden implementar múltiples criterios a través de la función lambda.

sorted_list = sorted(list_to_sort, key=lambda x: (x[1], x[0]))
Rahul Kumar avatar Mar 24 '2017 09:03 Rahul Kumar
array.sort(key = lambda x:x[1])

Puedes ordenar fácilmente usando este fragmento, donde 1 es el índice del elemento.

Abhi avatar Jun 20 '2018 11:06 Abhi