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实现通过哈希算法检测图片重复的教程
Apr 02 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
python实现媒体播放器功能
Feb 11 Python
python实现年会抽奖程序
Jan 22 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
python如何统计代码运行的时长
Jul 24 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
利用python实现汉诺塔游戏
Mar 01 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
解决GD中文乱码问题
2007/02/14 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
Python ljust rjust center输出
2008/09/06 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
历史学专业个人的自我评价
2013/10/13 职场文书
电气个人求职信范文
2014/02/04 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
核心价值观演讲稿
2014/05/13 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
Python基本的内置数据类型及使用方法
2022/04/13 Python
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript