second - sort python 3
Clasificando una tupla que contiene tuplas (4)
Tengo la siguiente tupla, que contiene tuplas:
MY_TUPLE = (
(''A'',''Apple''),
(''C'',''Carrot''),
(''B'',''Banana''),
)
Me gustaría ordenar esta tupla según el segundo valor contenido en las tuplas internas (es decir, clasificar Apple, Zanahoria, Plátano en lugar de A, B, C).
¿Alguna idea?
Desde ordenar Mini-HOW TO
A menudo hay un built-in que coincidirá con sus necesidades, como str.lower (). El módulo de operador contiene una serie de funciones útiles para este propósito. Por ejemplo, puede ordenar tuplas en función de su segundo elemento usando operator.itemgetter ():
>>> import operator
>>> L = [(''c'', 2), (''d'', 1), (''a'', 4), (''b'', 3)]
>>> map(operator.itemgetter(0), L)
[''c'', ''d'', ''a'', ''b'']
>>> map(operator.itemgetter(1), L)
[2, 1, 4, 3]
>>> sorted(L, key=operator.itemgetter(1))
[(''d'', 1), (''c'', 2), (''b'', 3), (''a'', 4)]
Espero que esto ayude.
Logré lo mismo con este código, pero tu sugerencia es genial. ¡Gracias!
templist = [ (line[1], line) for line in MY_TUPLE ]
templist.sort()
SORTED_MY_TUPLE = [ line[1] for line in templist ]
sorted(my_tuple, key=lambda tup: tup[1])
En otras palabras, al comparar dos elementos de la tupla que está ordenando, ordene según el valor de retorno de la función pasada como parámetro clave.
from operator import itemgetter
MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=itemgetter(1)))
o sin itemgetter
:
MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=lambda item: item[1]))