2013-09-05 60 views
2

我发现this question在过去很有帮助,但是这次我需要用一些属性的总和对列表中的某些对象进行排序。对python中的对象列表进行排序

具体而言,我有对象的列表中的每个与一个尺寸atttribute 3轴(例如:obj.dimensions.x)

我知道你可以通过一个属性与排序的列表:

list.sort(key=lambda obj: obj.dimensions.x) 

但我怎么能通过每个对象的三个轴的尺寸的总和来排序它,使得具有尺寸3,3,3的对象会在具有5,1,1(较大的总和)的对象之前出现?

回答

2

由于obj在你的例子是你的整个对象,你可以这样做:

lst.sort(key=lambda obj: obj.dimensions.x+obj.dimensions.y+obj.dimensions.z) 

list是一个变量可怜的名字,因为它也是一个名字内置list()功能。

+0

很好,感谢您的快速响应 –

1
list.sort(key=lambda obj: obj.dimensions.x + obj.dimensions.y + obj.dimensions.z) 

>>> l = [[5,1,1], [3,3,3], [2,1,1], [0,0,0]] 
>>> l.sort(key=lambda x: x[0] + x[1] + x[2]) 
>>> l 
[[0, 0, 0], [2, 1, 1], [5, 1, 1], [3, 3, 3]] 

这只是告诉你,你必须在关键的功能列表中的项目的访问(仅供参考,在我的例子l.sort(key=sum)会更合适)的例子。