python对象列表,根据对象属性以降序排列 [英] python object list, sort in descending order based on object attribute

查看:299
本文介绍了python对象列表,根据对象属性以降序排列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个对象列表,我需要按对象属性之一对其进行排序.

I have a list of objects, which I need to sort by one of the objects attributes.

我可以使用以下代码升序排序

I can sort in ascending order with the following code

list1 = sorted(list1, key=lambda object1: object1.fitness)

但是,这按升序对列表进行排序,而我需要按降序进行排序.对对象列表进行排序时有可能吗?

However, this sorts the list by ascending order and what I need to do is sort by descending. Is this possible when sorting a list of objects?

推荐答案

指定reverse=True参数:

list1 = sorted(list1, key=lambda object1: object1.fitness, reverse=True)

演示(简单的整数列表):

Demo (simple list of integers):

>>> l = [6, 0, 2, 3, 1, 5, 4]
>>> sorted(l)
[0, 1, 2, 3, 4, 5, 6]
>>> sorted(l, reverse=True)
[6, 5, 4, 3, 2, 1, 0]

演示(datetime.dates,使用operator.attrgetter代替@cethMMorton建议的lambda):

Demo (datetime.dates, using operator.attrgetter instead of lambda as @SethMMorton suggested):

>>> from datetime import date
>>> from operator import attrgetter
>>> l = [date(2014, 4, 11), date(2014, 4, 2), date(2014, 4, 3), date(2014, 4, 8)]

>>> sorted(l, key=attrgetter('day'))
[datetime.date(2014, 4, 2), 
 datetime.date(2014, 4, 3), 
 datetime.date(2014, 4, 8), 
 datetime.date(2014, 4, 11)]
>>> sorted(l, key=attrgetter('day'), reverse=True)
[datetime.date(2014, 4, 11), 
 datetime.date(2014, 4, 8), 
 datetime.date(2014, 4, 3), 
 datetime.date(2014, 4, 2)]

这篇关于python对象列表,根据对象属性以降序排列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆