簡體   English   中英

通過一些屬性的總和對python中的對象列表進行排序

[英]Sort a list of objects in python by the sum of some attributes

過去,我發現這個問題很有幫助,但是這次我需要根據列表中某些屬性的總和對它們進行排序。

具體來說,我有一個對象列表,每個對象的尺寸都歸因於3個軸(例如:obj.dimensions.x)

我知道您可以使用以下一種屬性對列表進行排序:

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

但是,如何對每個對象的三個軸的尺寸之和進行排序,以使尺寸為3、3、3的對象位於具有5、1、1(更大的總和)的對象之前?

由於示例中的obj是您的整個對象,因此可以執行以下操作:

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

list是變量的較差名稱,因為它也是內置list()函數的名稱。

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]]

這只是一個示例,向您展示您可以訪問鍵函數中的列表項(FYI,在我的示例中為l.sort(key=sum)更合適)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM