sorted()排序进阶版

# 有学生考试分数

message = [
    {"姓名": "小明", "学号": "05", "班级": 1, "分数": 80},
    {"姓名": "小红", "学号": "04", "班级": 1, "分数": 90},
    {"姓名": "小王", "学号": "02", "班级": 1, "分数": 95},
    {"姓名": "小花", "学号": "08", "班级": 2, "分数": 88},
    {"姓名": "小丽", "学号": "07", "班级": 2, "分数": 88},
    {"姓名": "小刘", "学号": "09", "班级": 2, "分数": 88},
    {"姓名": "小天", "学号": "01", "班级": 2, "分数": 95},
]

# 排序规则:
#     1.按照分数从小到大排序
#     2.分数相同,则按照班级从小到大排序
#     3.分数和班级都相同,按照学号从小到大排序

new_message = sorted(message, key = lambda x: (x["分数"], x["班级"], x["学号"]))
print(new_message)

需要注意的是:sorted默认排序是从小到大
打印结果如下:

[
{'姓名': '小明', '学号': '05', '班级': 1, '分数': 80}, 
{'姓名': '小丽', '学号': '07', '班级': 2, '分数': 88}, 
{'姓名': '小花', '学号': '08', '班级': 2, '分数': 88}, 
{'姓名': '小刘', '学号': '09', '班级': 2, '分数': 88}, 
{'姓名': '小红', '学号': '04', '班级': 1, '分数': 90}, 
{'姓名': '小王', '学号': '02', '班级': 1, '分数': 95}, 
{'姓名': '小天', '学号': '01', '班级': 2, '分数': 95}
]

要想从大到小排序,只需要添加reverse = True

new_message=sorted(message,key=lambda x:(x["分数"],x["班级"],x["学号"]),reverse=Ture)
# 结果如下:分数, 班级, 学号都从大到小排序
[
{'姓名': '小天', '学号': '01', '班级': 2, '分数': 95}, 
{'姓名': '小王', '学号': '02', '班级': 1, '分数': 95}, 
{'姓名': '小红', '学号': '04', '班级': 1, '分数': 90}, 
{'姓名': '小刘', '学号': '09', '班级': 2, '分数': 88}, 
{'姓名': '小花', '学号': '08', '班级': 2, '分数': 88}, 
{'姓名': '小丽', '学号': '07', '班级': 2, '分数': 88}, 
{'姓名': '小明', '学号': '05', '班级': 1, '分数': 80}
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值