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判断字符串与大小写转换
Jun 08 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
python中下标和切片的使用方法解析
Aug 27 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
python实现俄罗斯方块小游戏
Apr 24 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
python爬虫实例之获取动漫截图
May 31 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
Python 多进程、多线程效率对比
Nov 19 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 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
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
php 购物车实例(申精)
2009/05/11 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
python计算auc的方法
2020/09/09 Python
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
劲霸男装广告词
2014/03/21 职场文书
聚会通知怎么写
2015/04/23 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
Python基本数据类型之字符串str
2021/07/21 Python
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL