美文网首页
python3 sorted用法

python3 sorted用法

作者: cca1yy | 来源:发表于2019-04-26 16:10 被阅读0次

    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函数

    相关文章

      网友评论

          本文标题:python3 sorted用法

          本文链接:https://www.haomeiwen.com/subject/bmefnqtx.html