python3 sorted用法

2019-04-26  本文已影响0人  cca1yy

1. 数字排序

使用sorted()函数可以对list进行排序 使用key函数实现自定义排序。这一行的命令包含三个步骤。首先,使用key函数依次处理list内的每个元素,得到keys = [36, 5, 12, 9, 21];其次,使用sorted函数对处理后的keys序列进行排序,得到temps = [5, 9, 12, 21, 36]; 最后,将temps和原始序列[36, 5, -12, 9, -21]一一对应起来,按照原始序列的数值,temps的顺序输出

2. 字符串排序

按照字符串首字母的字典序对字符串进行排序 忽略字符的大小写,对字符串按照字典序从小到大的顺序排列 忽略字符的大小写,对字符串按照字典序从大到小的顺序排列

3. 对特殊的list排序,即list内部是元组,如 L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

自定义排序, 此处的itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。实际使用时,a = [1,2,3], b = operator.itemgetter(1,0), 然后将b作用于a---print(b(a))得到值为(2,1)

上图中,sorted(L, key=itemgetter(0)),即按照每个元组的第一个元素对所有元组进行排序。sorted(L, key=itemgetter(1)),即按照每个元组的第二个元素对所有元组进行排序。 sorted(L, key=itemgetter(1),reverse = True),即按照每个元组的第二个元素对所有元组逆序排序。

operator.itemgetter使用方法

廖雪峰官网例题:


题目描述
#sortedByName.py
class Solution:
    def by_name(self, t): #按照姓名排序
        return t[0]
    def by_score(self, t): #按照成绩排序
        return t[1]


if __name__ == "__main__":
    L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
    print("原始序列", L)
    ss = Solution()
    L2 = sorted(L, key = ss.by_name)
    print("按照姓名排序",L2)
    L3 = sorted(L, key = ss.by_score)
    print("按照成绩排序",L3)
    L4 = sorted(L, key = ss.by_score, reverse = True)
    print("按照成绩逆序排序",L4)
代码执行结果

4. 使用sorted()函数进行多级排序

例如:

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=operator.itemgetter(1,2))  #根据第二个域和第三个域进行排序
先根据第二个域进行排序,再根据第三个域进行排序

参考:
廖雪峰的官方网站
Python中的sorted函数以及operator.itemgetter函数

上一篇下一篇

猜你喜欢

热点阅读