[英]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.