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+numpy+matplotalib实现梯度下降法
Aug 31 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
python中提高pip install速度
Feb 14 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
python 实现图片修复(可用于去水印)
Nov 19 Python
python代码实现猜拳小游戏
Nov 30 Python
python用字节处理文件实例讲解
Apr 13 Python
教你怎么用Python监控愉客行车程
Apr 29 Python
python如何正确使用yield
May 21 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
百度地图API应用之获取用户的具体位置
2014/06/10 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
详细解析Python中的变量的数据类型
2015/05/13 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Python中@property的理解和使用示例
2019/06/11 Python
keras 权重保存和权重载入方式
2020/05/21 Python
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
C#基础面试题
2016/10/17 面试题
某科技软件测试面试题
2013/05/19 面试题
财务会计专业毕业生自荐信
2013/10/19 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL