У меня есть список кортежей, которые выглядят примерно так:
("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
Я хочу получить список, отсортированный в порядке возрастания по второму значению кортежа. Итак, L [0] должно быть ("Person 2", 8)
после сортировки.
Как я могу это сделать? Использование Python 3.2.2 Если это поможет.
Ответы:
Вы можете использовать
key
параметр дляlist.sort()
:my_list.sort(key=lambda x: x[1])
или, немного быстрее,
my_list.sort(key=operator.itemgetter(1))
(Как и в случае с любым другим модулем, вам необходимо
import operator
иметь возможность его использовать.)источник
L.sort(key=operator.itemgetter(1))
в своем коде, но получаю ошибку NameError, этот «оператор» не определен. Мне нужно импортировать что-нибудь особенное?import operator
для использования функции. Если вы добавите это к своему ответу, я отмечу, что он принят.А если вы используете python 3.X, вы можете применить
sorted
функцию в mylist. Это просто дополнение к ответу, который @Sven Marnach дал выше.# using *sort method* mylist.sort(lambda x: x[1]) # using *sorted function* sorted(mylist, key = lambda x: x[1])
источник
sorted
вместоlist.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))
вывод -> Rogue One
источник