¿Cómo ordenar una lista de listas por un índice específico de la lista interna?
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?
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.
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])
Itemgetter le permite ordenar por múltiples criterios/columnas:
sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1))
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]))
array.sort(key = lambda x:x[1])
Puedes ordenar fácilmente usando este fragmento, donde 1 es el índice del elemento.