Сортировка кортежей по второму параметру - PullRequest
82 голосов
/ 10 декабря 2011

У меня есть список кортежей, которые выглядят примерно так:

("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)

То, что я хочу получить, это список, отсортированный в порядке возрастания по второму значению кортежа. Так что L [0] должно быть ("Person 2", 8) после сортировки.

Как я могу это сделать? Использование Python 3.2.2 Если это поможет.

Ответы [ 3 ]

162 голосов
/ 10 декабря 2011

Вы можете использовать параметр key для list.sort():

my_list.sort(key=lambda x: x[1])

или, немного быстрее,

my_list.sort(key=operator.itemgetter(1))

(Как и для любого модуля, вам нужноimport operator, чтобы иметь возможность использовать его.)

4 голосов
/ 05 августа 2018

И если вы используете 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]) 
0 голосов
/ 21 июня 2017
    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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...