Python 对字典列表指定多个条件排序

一、序言:

想必看到本篇博文的老师们,在学习或工作中,肯定遇到了类似疑问???

  • 指定 一个条件 对列表进行排序 So easy!
  • 那对 多个条件 又该怎么实现排序呢?今天看完本博文,你依然会感觉到 So easy!

---- Nick.Peng


二、代码实现如下:

# -*- coding: utf-8 -*-
# @Author: Nick.Peng
# @Date:   2019-10-21 15:34:08
# @Last Modified by:   Nick.Peng
# @Last Modified time: 2019-10-21 15:51:31

class_list = [{'class_id': 2, 'class_name': '初中物理班', 'stu_num': 2, 'site': 1},
              {'class_id': 1, 'class_name': '高中数学班', 'stu_num': 2, 'site': 3},
              {'class_id': 3, 'class_name': '初中数学班', 'stu_num': 1, 'site': 2},
              {'class_id': 4, 'class_name': '初中数学班1', 'stu_num': 0, 'site': 4},
              {'class_id': 5, 'class_name': '初中物理班1', 'stu_num': 0, 'site': 4},
              {'class_id': 6, 'class_name': '高中数学班1', 'stu_num': 1, 'site': 4}]

# ====== 方法一:======(利用list的sort方法,在原数据基础上进行排序)
# class_list.sort(key=lambda x: (x['site']))	# 按一个条件排序
class_list.sort(key=lambda x: (x['site'], -x["stu_num"]))	# 按多个条件排序
print(class_list)

# ====== 方法二:======(利用Python高阶函数sorted进行排序)
# cls_li = sorted(class_list, key=lambda x: (x["site"], -x["stu_num"]))
# print(cls_li)

# 输出结果:
[{'class_id': 2, 'class_name': '初中物理班', 'stu_num': 2, 'site': 1},
{'class_id': 3, 'class_name': '初中数学班', 'stu_num': 1, 'site': 2},
{'class_id': 1, 'class_name': '高中数学班', 'stu_num': 2, 'site': 3},
{'class_id': 6, 'class_name': '高中数学班1', 'stu_num': 1, 'site': 4},
{'class_id': 4, 'class_name': '初中数学班1', 'stu_num': 0, 'site': 4},
{'class_id': 5, 'class_name': '初中物理班1', 'stu_num': 0, 'site': 4}]


三、排序前后数据对比如下:

Python 对字典列表指定多个条件排序_第1张图片

四、完结:

如果对各位的学习和工作有帮助,记得点 赞 额 ~ ~ ~

你可能感兴趣的:(Python)