Cómo ordenar una lista/tupla de listas/tuplas por elemento en un índice determinado

Resuelto Stan asked hace 14 años • 11 respuestas

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 2de dónde es (1,2,3), 5es de (4,5,6). ¿Cuál es la forma común de hacer esto? ¿Debo almacenar tuplas o listas en mi lista?

Stan avatar Jun 26 '10 06:06 Stan
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
Stephen avatar Jun 25 '2010 23:06 Stephen
from operator import itemgetter
data.sort(key=itemgetter(1))
manova avatar Nov 11 '2013 08:11 manova