python 列表(list)排序

本文详细介绍了Python内置函数`sorted()`的使用,包括对普通列表、元组列表和字典列表的排序。通过`key`参数和`reverse`参数,可以实现升序和降序排列。示例涵盖了按元素、元组中的指定字段、字典中的特定键进行排序,并展示了当排序依据相同的情况下如何进行次要条件排序。
摘要由CSDN通过智能技术生成

使用python的sorted函数,可对列表进行排序, 该函数默认从小到大排序。

1. 列表中为普通元素
a = [80, 85, 90, 100]
a = sorted(a) # sorted函数默认从小到大排序。
print(a) # 输出结果: [80, 85, 90, 100]

倒序排序为从大到小排序,使用reverse=True

a = [80, 85, 90, 100]
a = sorted(a, reverse=True) # reverse=True, 从大到小排序。
print(a) # 输出结果: [100, 90, 85, 80]
2. 列表中为元组元素

列表元素为元组元素时,我们需要用到参数关键词key,lambda是一个隐函数,是固定写法,x表示一个元组 (x为任意名);x[0]表示元组里的第一个元素,第二个元素就是x[1]。

(1) 按第一个关键字排序
按照元祖中的姓名排序:

a = [('Mary',80),('David',85),('Jack',90),('Alice',100)]
a = sorted(a, key = lambda x:x[0])
print(a) # 输出结果: [('Alice', 100), ('David', 85), ('Jack', 90), ('Mary', 80)]

(2) 按第二个关键字排序
按照元祖中的得分排序:

a = [('Mary',80),('David',85),('Jack',90),('Alice',100)]
a = sorted(a, key = lambda x:x[1])
print(a) # 输出结果: [('Mary', 80), ('David', 85), ('Jack', 90), ('Alice', 100)]

倒序排序为从大到小排序,使用reverse=True

a = [('Mary',80),('David',85),('Jack',90),('Alice',100)]
a = sorted(a, key = lambda x:x[1], reverse=True)
print(a) # 输出结果: [('Mary', 80), ('David', 85), ('Jack', 90), ('Alice', 100)]
2. 列表中为字典元素

按照字典中的’score’项从大到小排序:

a = [{'name': 'Mary', 'score': 80},
     {'name': 'David', 'score': 85},
     {'name': 'Jack', 'score': 90},
     {'name': 'Alice', 'score': 100}]
a = sorted(a, key = lambda x:x['score'], reverse=True) 
print(a) 
# 输出结果: [{'name': 'Alice', 'score': 100}, {'name': 'Jack', 'score': 90}, {'name': 'David', 'score': 85}, {'name': 'Mary', 'score': 80}]

'score’项相同时,按照’name’从大到小排序:

a = [{'name': 'Mary', 'score': 80},
     {'name': 'David', 'score': 85},
     {'name': 'Jack', 'score': 95},
     {'name': 'Jock', 'score': 95}]
a = sorted(a, key = lambda x: (x['score'], x['name']), reverse=True)
print(a)
# 输出结果: [{'name': 'Jock', 'score': 95}, {'name': 'Jack', 'score': 95}, {'name': 'David', 'score': 85}, {'name': 'Mary', 'score': 80}]
  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值