2

过去我发现这个问题很有帮助,但这次我需要根据它们的一些属性的总和对列表中的一些对象进行排序。

具体来说,我有一个对象列表,每个对象在 3 个轴上都有一个维度属性(例如:obj.dimensions.x)

我知道您可以使用以下属性按一个属性对列表进行排序:

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

但是我怎么能按每个对象的三个轴的尺寸总和对其进行排序,这样尺寸为 3、3、3 的对象会出现在尺寸为 5、1、1(更大的总和)的对象之前?

4

2 回答 2

2

由于obj在您的示例中是您的整个对象,因此您可以这样做:

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

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

于 2013-09-05T12:57:55.413 回答
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)中更合适)。

于 2013-09-05T12:56:43.970 回答