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编程中namedtuple类的用法
Jun 21 Python
Python操作csv文件实例详解
Jul 31 Python
python用户管理系统的实例讲解
Dec 23 Python
Python字典操作详细介绍及字典内建方法分享
Jan 04 Python
简单实现python画圆功能
Jan 25 Python
python实现机器人行走效果
Jan 29 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
一篇文章搞懂Python的类与对象名称空间
Dec 10 Python
Python查找文件中包含中文的行方法
Dec 19 Python
使用Python的turtle模块画国旗
Sep 24 Python
python中如何对多变量连续赋值
Jun 03 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP新手上路(四)
2006/10/09 PHP
php 删除记录实现代码
2009/03/12 PHP
php去除重复字的实现代码
2011/09/16 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP的引用详解
2015/02/22 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python2 对excel表格操作完整示例
2020/02/23 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
golang/python实现归并排序实例代码
2020/08/30 Python
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
五一家具促销方案
2014/01/10 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
五年级下册复习计划
2015/01/19 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android