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之Python文档
Oct 10 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
Django 框架模型操作入门教程
Nov 05 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
python tkinter实现连连看游戏
Nov 16 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 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 过滤器实现代码
2010/08/09 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
jscript读写二进制文件的方法
2015/04/22 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
Python单元测试框架unittest简明使用实例
2015/04/13 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Python标准库sched模块使用指南
2017/07/06 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
python实现图像识别功能
2018/01/29 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
Python实现网站表单提交和模板
2019/01/15 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
大学生村官工作感言
2014/01/10 职场文书
销售人员自我评价
2014/02/01 职场文书
策划创业计划书
2014/02/06 职场文书
教研处工作方案
2014/05/26 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
党员先进事迹材料
2014/12/19 职场文书
聚会通知怎么写
2015/04/23 职场文书
学生犯错保证书
2015/05/09 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
Django框架之路由用法
2022/06/10 Python