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中基于生成器的状态机
Apr 13 Python
python定时执行指定函数的方法
May 27 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
简单实现python数独游戏
Mar 30 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 Python
python opencv实现图像配准与比较
Feb 09 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怎样用正则抓取页面中的网址
2016/08/09 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
python的常见命令注入威胁
2013/02/18 Python
用Python写冒泡排序代码
2016/04/12 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
2014年大班元旦活动方案
2014/02/26 职场文书
计算机专业职业规划
2014/02/28 职场文书
股权转让意向书
2014/04/01 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
长城英文导游词
2015/01/30 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
信仰纪录片观后感
2015/06/08 职场文书
物业保洁员管理制度
2015/08/05 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python