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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:python实现对象列表根据某个属性排序的方法详解-创新互联
网站地址:http://pwwzsj.com/article/dsosci.html