• python内置函数sorted()


    • 列表对象提供了sort()方法支持原地排序,而内置函数sorted()返回新列表,并不对原列表进行任何修改
    • sorted()可以对列表,元组,字典,range对象等进行排序
    • 列表的sort()方法和内置函数sorted()都支持key参数实现复杂排序要求

    例1

    person = [{'name': 'zhangsan', 'age': 37},
              {'name': 'lisi', 'age': 40},
              {'name': 'wangwu', 'age': 43},
              {'name': 'zhangsan', 'age': 22}]
    print(person)
    # 先按姓名升序排序,姓名相同的按年龄降序排序
    print(sorted(person, key=lambda x: (x['name'], -x['age'])))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    例2

    from operator import itemgetter
    
    phonebook = {'linda': '7750', 'Bob': '9345', 'Carol': '5834'}
    print(sorted(phonebook.items(), key=itemgetter(1)))
    print(sorted(phonebook.items(), key=itemgetter(0)))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    from operator import itemgetter
    
    gameresult = [['Bob', 95.0, 'A'],
                  ['Alan', 86.0, 'B'],
                  ['Mandy', 95.0, 'A'],
                  ['Bob', 59.0, 'E']]
    # 按姓名升序,姓名相同按分数升序
    print(sorted(gameresult, key=itemgetter(0, 1)))
    # 按分数升序,分数相同的按姓名升序
    print(sorted(gameresult, key=itemgetter(1, 0)))
    # 按等级升序,等级相同的按姓名升序
    print(sorted(gameresult, key=itemgetter(2, 0)))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    例3

    from operator import itemgetter
    
    gameresult = [{'name': 'Bob', 'wins': 10, 'lpsses': 3},
                  {'name': 'David', 'wins': 3, 'losses': 5},
                  {'name': 'Carol', 'wins': 10, 'losses': 5},
                  {'name': 'Patty', 'wins': 9, 'losses': 3}]
    # 按'wins'升序,该值相同则按'name'升序排序
    print(sorted(gameresult, key=itemgetter('wins', 'name')))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    例4

    # 根据另外一个列表的值来对当前列表元素进行排序
    
    list1 = ["what", "I'm", "sorting", "by"]
    list2 = ["something", "else", "to", "sort"]
    pairs = zip(list1, list2)
    print(sorted(pairs))
    print(sorted(list2, key=lambda item: list1[list2.index(item)]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    例5

    有一个整数列表,要求调整元素顺序,把奇数放在前面,偶数放在后面

    from random import randint
    x = [randint(1, 100) for _ in range(20)]
    print(x)
    print(sorted(x, key=lambda item: item % 2 == 0))
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

  • 相关阅读:
    TypeScript入门及面向对象
    SpringMVC入门指南
    一名前端工程师自检清单与思考(来吧,干完这套清单年薪30不是梦)
    国际物流和跨境电商物流的区别
    024-继承与多态(重载与重写)案例分析
    扫地机器人经营商城小程序的作用是什么
    maven 项目报错--Using ‘UTF-8‘ encoding to copy filtered resources
    基于react的瀑布流组件
    mybatise-plus的id过长问题
    AtCoder Beginner Contest 263 部分题解
  • 原文地址:https://blog.csdn.net/2302_77179144/article/details/134042844