Tengo una lista de tuplas que se parecen a esto:
("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
Lo que quiero que se produzca es la lista ordenada en orden ascendente, por el segundo valor de la tupla. Entonces L [0] debería ser ("Person 2", 8)
después de ordenar.
¿Cómo puedo hacer esto? Usando Python 3.2.2 Si eso ayuda.
Respuestas:
Puede utilizar el
key
parámetro paralist.sort()
:my_list.sort(key=lambda x: x[1])
o, un poco más rápido,
my_list.sort(key=operator.itemgetter(1))
(Como con cualquier módulo, necesitará
import operator
poder usarlo).fuente
L.sort(key=operator.itemgetter(1))
en mi código, pero obtengo un NameError, ese 'operador' no está definido. ¿Necesito importar algo especial?import operator
para usar la función. Si agrega eso a su respuesta, lo marcaré como aceptado.Y si está utilizando Python 3.X, puede aplicar la
sorted
función en mylist. Esto es solo una adición a la respuesta que @Sven Marnach ha dado anteriormente.# using *sort method* mylist.sort(lambda x: x[1]) # using *sorted function* sorted(mylist, key = lambda x: x[1])
fuente
sorted
lugar delist.sort
.def findMaxSales(listoftuples): newlist = [] tuple = () for item in listoftuples: movie = item[0] value = (item[1]) tuple = value, movie newlist += [tuple] newlist.sort() highest = newlist[-1] result = highest[1] return result movieList = [("Finding Dory", 486), ("Captain America: Civil War", 408), ("Deadpool", 363), ("Zootopia", 341), ("Rogue One", 529), ("The Secret Life of Pets", 368), ("Batman v Superman", 330), ("Sing", 268), ("Suicide Squad", 325), ("The Jungle Book", 364)] print(findMaxSales(movieList))
salida -> Rogue One
fuente