我们传递给key的值是sort_list的每个元素的第二个值,这样就是按tuple的第二个值的值的大小排序。
可以使用多个key值来排序这代表奥林匹克运动会的信息,(姓名,成绩,年龄),成绩满分为100分。
participant_list = [ ('skdym', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('洁净的果汁', 90, 22), ('John', 45, 12)]我们将要按照成绩从高到低排列, 如果成绩相同,年龄小的排在前面。
所以这个问题要使用多个key值来排序,当第一个key值相同的情况下,再去比较第二个key值。
先来看几个小栗子,在python中,是可以直接比较tuple、list等。
所以这个问题编程的时候也是要用多个key值去比较。
# 这代表奥林匹克运动会的信息,(姓名,成绩,年龄),成绩满分为100分。participant_list = [ ('skdym', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('洁净的果汁', 90, 22), ('John', 45, 12)]# 我们将要按照成绩从高到低排列, 如果成绩相同,年龄小的排在前面。# 所以这个问题要使用多个key值来排序,当第一个key值相同的情况下,再去比较第二个key值。In [40]: participant_list = [ ...: ('skdym', 50, 18), ...: ('Terence', 75, 12), ...: ('David', 75, 20), ...: ('洁净的果汁', 90, 22), ...: ('John', 45, 12) ...: ]In [42]: sorted(participant_list,key=lambda x:(100-x[1],x[2]))Out[42]:[('洁净的果汁', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('skdym', 50, 18), ('John', 45, 12)]其中为什么要用100-x[1]呢,因为我们是要按照成绩从高到低排,但是sorted函数默认是从低到高排,所以100-x[1]最小的那个值就代表成绩最大的值。