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 可以参见地址

总结

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

python 类属性排序_Python 使用多属性来进行排序相关推荐

  1. python 类属性排序_Python实现多属性排序的方法

    多属性排序: 把需要排序的属性拿出来作为一个 tuple,主要的放前面,次要的放后面. 假如某对象有n个属性,那么先按某规则对属性a进行排序,在属性a相等的情况下再按某规则对属性b进行排序,以此类推. ...

  2. python程序实例讲解_Python编程之属性和方法实例详解

    本文实例讲述了Python编程中属性和方法使用技巧.分享给大家供大家参考.具体分析如下: 一.属性 在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用 ...

  3. python中类方法可以访问实例属性吗_Python类方法访问属性

    Python类方法访问属性教程 Python 中的 Python实例方法访问属性详解 语法 class People: money = 10000 def __init__(self, name): ...

  4. python类的命名空间_Python之关于类变量的两种赋值区别详解

    我就废话不多说了,还是直接看代码吧! # -*- coding:utf-8 -*- #面试题,写一个方法,将一行字符串中所有的单词数量统计出来 class Person(object): TAG = ...

  5. python类详解_python面向对象编程:python类和实例讲解

    东尧爱分享 这是东尧每天一篇文章的第51天 东尧写文章的目标:分享东尧的经验和思考,帮你获取物质和精神两方面幸福. 1 什么是对象 在python里面,一切皆为对象.也就是说python里的所有数据都 ...

  6. python类和对象_Python类和对象

    python类和对象 Python is an object-oriented programming language. Python Classes and Objects are the cor ...

  7. python类继承实例_Python实现类继承实例

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例. 实例代码如下: #! /usr/bin/python # Filename: inherit ...

  8. python list排序_Python中字符串List按照长度排序

    下面看下字符串List按照长度排序(python)的实现方法 myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 1.首先得到每个字符串长度 ...

  9. python类继承实例_python类继承与子类实例初始化用法分析

    这篇文章主要介绍了python类继承与子类实例初始化用法,实例分析了Python类的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 [ 先贴参考书籍原文(中文英文对照)] __init__方法介 ...

  10. python字典按照key排序_python中字典按key值排序的实现方法

    之前小编介绍了字典本身不可排序,但按值可以,小编也介绍了按value值排序的三种方法.sorted()函数可以对数字或字符串进行排序,按key排序只是输出的key值的排序列表,使用sorted()函数 ...

最新文章

  1. JAVA基础4-循环语句
  2. 使用迁移学习不断的自我纠正神经网络
  3. webservice axis1.4生成客户端
  4. 144.⑨要写信(错排公式与高精度练习)
  5. 一个简单的Angular search UI实现
  6. python两列数据相关性_使用.corr获取两列之间的相关性
  7. SQL Server外键中的DELETE CASCADE和UPDATE CASCADE
  8. 进击的 Flink:网易云音乐实时数仓建设实践
  9. 一个能拖动,能调整大小,能更新bind值的vue指令-vuedragx
  10. 雅虎Yahoo 前段优化 14条军规
  11. js判断IE内核,IE浏览器版本
  12. 软件著作权登记申请容易通过吗?软著申请成功率高吗?
  13. 测试所用的技术(黑盒、白盒测试等)
  14. c语言未定义main报错,C语言编译器的错误信息
  15. 淘宝618列车喵币自动做任务app 懒人一键安装包
  16. 计算机铃声在线使用方法,史上最全的iPhone自定义铃声教程 无需电脑也能搞定 小白必看!...
  17. 如何重置计算机服务到默认状态,电脑慢到让人抓狂?教你如何将Windows10还原到出厂设置...
  18. 火狐书签备份_备份和还原Firefox密码列表
  19. OC正式协议和非正式协议
  20. 与基础事务管理器的通信失败 存货申请_图文并茂讲解分布式事务的实现原理...

热门文章

  1. Windows Phone开发(12):认识一下独具个性的磁贴
  2. [URAL]1014 The Product of Digits
  3. mysql truncate耗时_线上MySQL 32G大小的表truncate所消耗的时间为2分钟,快还是慢?...
  4. 设计模式 (二十一) 策略模式
  5. Spring中的bean是否是线程安全的
  6. 接口如何保证幂等性的解决方案
  7. Spring Aop源码解读
  8. 如何查看Linux的系统是64位的还是32位的
  9. Docker 提供外部访问
  10. v-for 遍历 Map