Python 使用多属性来进行排序


Posted in Python onSeptember 01, 2019

Python 中 list.sort() 是列表中非常常用的排序函数, key 参数可以对单个属性进行排序。

但是想要实现类似 sql 中 order by id, age 一样,对多个字段进行排序就不支持了。

py2 中 sort() 函数还有个 cmp 参数可以传入一个方法,可以自定义对多个属性进行排序,py3 中移除了这个字段。

py3 想要实现这个功能,需要使用 functools 模块中的方法,实例如下

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)

from functools import cmp_to_key

def cmp_func(a, b):

  if a['id'] < b['id']:
    return -1
  elif a['id'] > b['id']:
    return 1

  if a['name'] < b['name']:
    return -1
  elif a['name'] > b['name']:
    return 1

  return 0

arr.sort(key=cmp_to_key(cmp_func))

上面的例子我们实现了 id 正序排序,如果 id 相同,则按照 age 正序排序

为了方便可以封装成一个方法,以供列表调用,封装的方法 demo 可以参见地址

https://github.com/wxnacy/study/blob/master/python/office_module/list_demo/sort_by_multi_fields.py

总结

以上所述是小编给大家介绍的Python 使用多属性来进行排序,希望对大家有所帮助,如果大家有任何疑问欢迎给大家留言,小编会及时回复大家的!

Python 相关文章推荐
Django的URLconf中使用缺省视图参数的方法
Jul 18 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
Python 实现交换矩阵的行示例
Jun 26 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
基于python 凸包问题的解决
Apr 16 Python
python爬虫容易学吗
Jun 02 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
python 算法题——快乐数的多种解法
May 27 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 #Python
python实现多进程通信实例分析
Sep 01 #Python
python输出带颜色字体实例方法
Sep 01 #Python
基于Django框架的权限组件rbac实例讲解
Aug 31 #Python
Django之PopUp的具体实现方法
Aug 31 #Python
对django layer弹窗组件的使用详解
Aug 31 #Python
python2.7实现复制大量文件及文件夹资料
Aug 31 #Python
You might like
解析php中反射的应用
2013/06/18 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
二行代码解决全部网页木马
2008/03/28 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
使用python统计文件行数示例分享
2014/02/21 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python使用sorted排序的方法小结
2017/07/28 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Django框架多表查询实例分析
2018/07/04 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python绘制多个子图的实例
2019/07/07 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
python中wheel的用法整理
2020/06/15 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
公务员的自我鉴定
2013/10/26 职场文书
理工大学毕业生自荐信
2013/11/01 职场文书
工程总经理工作职责
2013/12/09 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
护理学专业求职信
2014/06/29 职场文书
贷款工资证明范本
2015/06/12 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫