2013-09-05 93 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)會更合適)的例子。