python实现对象列表根据某个属性排序的方法详解


Posted in Python onJune 11, 2019

本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下:

对于一个已有的python list, 里面的内容是一些对象,这些对象有一些相同的属性值, 在一些特定的情况下,需要自己选择特定的排序,也就是根据某一个具体的属性来排序,在网上找了下资料,一般来说有两种方法,但从根本上来说,还是调用了list.sort 方法来实现。下面是简单的测试代码片段:

#coding:utf-8
class Person:
  def __init__(self,name,age,salary):
    self.name = name
    self.age = age
    self.salary = salary
obj_list = [
      Person('juneys',20,30000),
      Person('sam',20,20000),
      Person('eddy',22,25000),
      Person('eagle',25,10000)
      ]
#第一种方法
obj_list.sort(cmp=None, key=lambda x:x.salary, reverse=False)
print '***********第一种方法***********************'
for obj in obj_list:
  print obj.name,obj.salary
# 第二种方法,更适合于大量数据的情况.
try:
  import operator
except ImportError:
  cmpfun= lambda x: x.count # use a lambda if no operator module
else:
  cmpfun= operator.attrgetter("salary") # use operator since it's faster than lambda
obj_list.sort(key=cmpfun, reverse=True)
print '***********第二种方法***********************'
for obj in obj_list:
  print obj.name,obj.salary

构造了一个 Person 类, 然后初始化一些对象放入obj_list 中, 然后想根据工资进行排序,方法一与方法二分别实现了升序或者降序。 以此类推还可以实现按年龄排序等.

本例结果如下:

***********第一种方法***********************
eagle 10000
sam 20000
eddy 25000
juneys 30000
***********第二种方法***********************
juneys 30000
eddy 25000
sam 20000
eagle 10000

Python 相关文章推荐
python多线程http下载实现示例
Dec 30 Python
python使用新浪微博api上传图片到微博示例
Jan 10 Python
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python Pandas常用函数方法总结
Jun 15 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 #Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 #Python
python flask框架实现传数据到js的方法分析
Jun 11 #Python
python 求一个列表中所有元素的乘积实例
Jun 11 #Python
python ChainMap的使用和说明详解
Jun 11 #Python
python 计算一个字符串中所有数字的和实例
Jun 11 #Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 #Python
You might like
PHP安全配置
2006/10/09 PHP
php 使用post,get的一种简洁方式
2010/04/25 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
python调用摄像头的示例代码
2020/09/28 Python
python各种excel写入方式的速度对比
2020/11/10 Python
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
开放系统互连参考模型
2016/06/29 面试题
行政总经理岗位职责
2013/12/05 职场文书
高中生学习的自我评价
2013/12/14 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
开学典礼感言
2014/02/16 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python