python内置函数sorted()

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

例1

python 复制代码
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'])))

例2

python 复制代码
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)))
python 复制代码
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)))

例3

python 复制代码
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')))

例4

python 复制代码
# 根据另外一个列表的值来对当前列表元素进行排序

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)]))

例5

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

python 复制代码
from random import randint
x = [randint(1, 100) for _ in range(20)]
print(x)
print(sorted(x, key=lambda item: item % 2 == 0))
相关推荐
程序员小白条1 小时前
度小满运维开发一面
java·运维·python·职场和发展·运维开发
全栈派森4 小时前
BI数据开发全攻略:数据仓库、模型搭建与指标处理
数据仓库·python·程序人生
铁手飞鹰5 小时前
从零复现论文:深度学习域适应1
linux·pytorch·python·深度学习·ubuntu·ai·迁移学习
薰衣草23338 小时前
力扣——位运算
python·算法·leetcode
两只程序猿9 小时前
数据可视化 | Violin Plot小提琴图Python实现 数据分布密度可视化科研图表
开发语言·python·信息可视化
大模型真好玩10 小时前
架构大突破! DeepSeek-V3.2发布,五分钟速通DeepSeek-V3.2核心特性
人工智能·python·deepseek
玩转C语言和数据结构10 小时前
Jupyter Notebook下载安装使用教程(附安装包,图文并茂)
ide·python·jupyter·anaconda·jupyternotebook·anaconda下载·anaconda安装包
2401_8414956410 小时前
【自然语言处理】Universal Transformer(UT)模型
人工智能·python·深度学习·算法·自然语言处理·transformer·ut
CodeCraft Studio10 小时前
借助Aspose.Email,使用 Python 读取 Outlook MSG 文件
前端·python·outlook·aspose·email·msg·python读取msg文件
赵谨言10 小时前
基于python数据挖据的教学监控系统的设计与应用
开发语言·经验分享·python