基于第二个参数对元组进行排序

时间:2011-12-10 19:29:33

标签: python sorting tuples

我有一个看起来像这样的元组列表:

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

我想要制作的是按元组的第二个值按升序排序的列表。所以L [0]在排序后应该是("Person 2", 8)

我该怎么做?使用Python 3.2.2如果有帮助。

3 个答案:

答案 0 :(得分:157)

您可以将key参数用于list.sort()

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

或者,稍快一点,

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

(与任何模块一样,您需要import operator才能使用它。)

答案 1 :(得分:3)

如果您使用的是python 3.x,则可以在 mylist上应用sorted函数。这只是@Sven Marnach上面给出的答案的补充。

# using *sort method*
mylist.sort(lambda x: x[1]) 

# using *sorted function*
sorted(mylist, key = lambda x: x[1]) 

答案 2 :(得分:-2)

    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