我发现this question在过去很有帮助,但这次我需要通过一些属性的总和对列表中的某些对象进行排序。
具体来说,我有一个对象列表,每个对象都有3个轴上的尺寸(例如:obj.dimensions.x)
我知道你可以用一个属性对列表进行排序:
list.sort(key=lambda obj: obj.dimensions.x)
但是我怎么能用每个物体的三个轴的尺寸之和对它进行排序,这样尺寸为3,3,3的物体就会出现在具有5,1,1(更大的总和)的物体之前?
答案 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)
中更合适)。