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 相关文章推荐
Python类的基础入门知识
Nov 24 Python
解密Python中的描述符(descriptor)
Jun 03 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
python numpy 显示图像阵列的实例
Jul 02 Python
python发送告警邮件脚本
Sep 17 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
python实现控制COM口的示例
Jul 03 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
php empty函数判断mysql表单是否为空
2010/04/12 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
php实例化一个类的具体方法
2019/09/19 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
分享10个原生JavaScript技巧
2015/04/20 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
理解javascript对象继承
2016/04/17 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
JavaScript闭包和范围实例详解
2016/12/19 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
python爬虫基础之urllib的使用
2020/12/31 Python
幼儿园运动会口号
2014/06/07 职场文书
校外活动方案
2014/08/28 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
初中英语教学反思范文
2016/02/15 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL
SQL Server中锁的用法
2022/05/20 SQL Server