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生成指定尺寸缩略图的示例
May 07 Python
遗传算法python版
Mar 19 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
简单了解python的break、continue、pass
Jul 08 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
python conda操作方法
Sep 11 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
Tensorflow读取并输出已保存模型的权重数值方式
Jan 04 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
PyQt 如何创建自定义QWidget
Mar 24 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 Memcached应用实现代码
2010/02/08 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
JS面向对象编程之对象使用分析
2010/08/19 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python性能测试工具locust的使用
2020/12/28 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
施工人员岗位职责
2013/12/12 职场文书
公司培训心得体会
2014/01/03 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
解除处分决定书
2015/06/25 职场文书
会计实训总结范文
2015/08/03 职场文书
工作一年自我鉴定
2019/06/20 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript