Cómo ordenar una lista/tupla de listas/tuplas por elemento en un índice determinado
Tengo algunos datos ya sea en una lista de listas o en una lista de tuplas, como esta:
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
Y quiero ordenar por el segundo elemento del subconjunto. Es decir, ordenar por 2,5,8 2
de dónde es (1,2,3)
, 5
es de (4,5,6)
. ¿Cuál es la forma común de hacer esto? ¿Debo almacenar tuplas o listas en mi lista?
Aceptado
sorted_by_second = sorted(data, key=lambda tup: tup[1])
o:
data.sort(key=lambda tup: tup[1]) # sorts in place
El modo de clasificación predeterminado es ascendente. Para ordenar en orden descendente utilice la opción reverse=True
:
sorted_by_second = sorted(data, key=lambda tup: tup[1], reverse=True)
o:
data.sort(key=lambda tup: tup[1], reverse=True) # sorts in place
from operator import itemgetter
data.sort(key=itemgetter(1))