Eu tenho uma lista de tuplas que se parecem com isto:
("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
O que quero que seja produzida é a lista classificada em ordem crescente, pelo segundo valor da tupla. Portanto, L [0] deve estar ("Person 2", 8)
após a classificação.
Como posso fazer isso? Usando Python 3.2.2 Se isso ajudar.
Respostas:
Você pode usar o
key
parâmetro paralist.sort()
:my_list.sort(key=lambda x: x[1])
ou, um pouco mais rápido,
my_list.sort(key=operator.itemgetter(1))
(Como com qualquer módulo, você precisará
import operator
ser capaz de usá-lo.)fonte
L.sort(key=operator.itemgetter(1))
no meu código, mas recebo um NameError, que 'operador' não está definido. Eu preciso importar algo especial?import operator
para usar a função. Se você adicionar isso à sua resposta, marcarei como aceito.E se você estiver usando o python 3.X, você pode aplicar a
sorted
função na minha lista. Este é apenas um acréscimo à resposta que @Sven Marnach deu acima.# using *sort method* mylist.sort(lambda x: x[1]) # using *sorted function* sorted(mylist, key = lambda x: x[1])
fonte
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))
saída -> Rogue One
fonte