python实现对象列表根据某个属性排序的方法详解

 更新时间:2019年06月11日 10:28:04   作者:轻舞肥羊   我要评论

这篇文章主要介绍了python实现对象列表根据某个属性排序的方法,结合具体实例形式详细分析了Python对象列表遍历、排序的两种常见操作技巧,需要的朋友可以参考下

本文实例讲述了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

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python使用re模块正则提取字符串中括号内的内容示例

    Python使用re模块正则提取字符串中括号内的内容示例

    这篇文章主要介绍了Python使用re模块正则提取字符串中括号内的内容,结合实例形式分析了Python使用re模块进行针对括号内容的正则匹配操作,并简单解释了相关修正符与正则语句的用法,需要的朋友可以参考下
    2018-06-06
  • Python中使用platform模块获取系统信息的用法教程

    Python中使用platform模块获取系统信息的用法教程

    这里我们整理了Python中使用platform模块获取系统信息的用法教程,包括操作系统与Python环境以及系统的环境变量等信息的获取方法:
    2016-07-07
  • python3实现ftp服务功能(客户端)

    python3实现ftp服务功能(客户端)

    这篇文章主要为大家详细介绍了python3实现ftp服务功能,客户端的相应代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 使用Turtle画正螺旋线的方法

    使用Turtle画正螺旋线的方法

    下面小编就为大家带来一篇使用Turtle画正螺旋线的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Django中Model的使用方法教程

    Django中Model的使用方法教程

    最近学习了一下Django文档的model部分,通过学习的内容整理了这篇文章,下面这篇文章主要给大家介绍了关于Django中Model的使用方法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-03-03
  • python的常用模块之collections模块详解

    python的常用模块之collections模块详解

    这篇文章主要介绍了python的常用模块之collections模块详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • pandas将DataFrame的列变成行索引的方法

    pandas将DataFrame的列变成行索引的方法

    下面小编就为大家分享一篇pandas将DataFrame的列变成行索引的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python抽象基类用法实例分析

    python抽象基类用法实例分析

    这篇文章主要介绍了python抽象基类用法,实例分析了Python抽象基类的使用方法与相关注意事项,需要的朋友可以参考下
    2015-06-06
  • python实现顺时针打印矩阵

    python实现顺时针打印矩阵

    这篇文章主要为大家详细介绍了python实现顺时针打印矩阵,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • python 函数内部修改外部变量的方法

    python 函数内部修改外部变量的方法

    今天小编就为大家分享一篇python 函数内部修改外部变量的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论