通过一些属性的总和对python中的对象列表进行排序

时间:2013-09-05 12:55:20

标签: python list sorting attributes

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

具体来说,我有一个对象列表,每个对象都有3个轴上的尺寸(例如:obj.dimensions.x)

我知道你可以用一个属性对列表进行排序:

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

但是我怎么能用每个物体的三个轴的尺寸之和对它进行排序,这样尺寸为3,3,3的物体就会出现在具有5,1,1(更大的总和)的物体之前?

2 个答案:

答案 0 :(得分:2)

由于示例中的obj是您的整个对象,因此您可以执行以下操作:

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

list是变量的名称,因为它也是内置list()函数的名称。

答案 1 :(得分: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)中更合适)。