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的Django框架中调用方法和处理无效变量
Jul 15 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
Python学习小技巧总结
Jun 10 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
Python3内置模块pprint让打印比print更美观详解
Jun 02 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
python实现高斯投影正反算方式
Jan 17 Python
Django中F函数的使用示例代码详解
Jul 06 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
基于Python 函数和方法的区别说明
Mar 24 Python
Python使用UDP实现720p视频传输的操作
Apr 24 Python
在pycharm中无法import所安装的库解决方案
May 31 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
jQuery参数列表集合
2011/04/06 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
js实现点击生成随机div
2020/01/16 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
Python简单生成随机姓名的方法示例
2017/12/27 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
什么是python的必选参数
2020/06/21 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
python二维图制作的实例代码
2020/12/03 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
个人委托书范本
2014/04/02 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2014年财务科工作总结
2014/11/11 职场文书
公司感谢信范文
2015/01/22 职场文书
初三英语教学计划
2015/01/23 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
Golang 实现WebSockets
2022/04/24 Golang