Сортировка кортежей по второму параметру


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

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

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

Как я могу это сделать? С помощью Python 3.2.2, если это помогает.

3 70

3 ответа:

можно использовать до list.sort():

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

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

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

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

и если вы используете Python 3.X, вы можете применить

    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))

выход -- > изгоев один