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通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
python cumsum函数的具体使用
Jul 29 Python
浅谈python3中input输入的使用
Aug 02 Python
python 遍历pd.Series的index和value
Nov 26 Python
Python API len函数操作过程解析
Mar 05 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 Python
Python - 10行代码集2000张美女图
May 23 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
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
JavaScript中的prototype使用说明
2010/04/13 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
python素数筛选法浅析
2018/03/19 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
python获取txt文件词向量过程详解
2019/07/05 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
验房委托书
2014/08/30 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript