簡體   English   中英

根據list屬性的第二個值對對象列表進行排序

[英]Sort a list of objects based on second value of list attribute

我有一個Car對象的列表,每個對象的定義如下:

class Car:
    def __init__(self, vin, name, year, price, weight, desc, owner):
        self.uid = vin
        self.name = name
        self.year = year
        self.price = price
        self.weight = weight
        self.desc = desc
        self.owner = owner
        self.depreciation_values = self.get_depreciation_values(name, vin)

depreciation_values屬性是一個包含8個組成部分的列表,如下所示:

[-12.90706937872767, -2.2011534921064739, '-17', '-51.52%', '-7', '-2.75%', '-5', '-1.74%']

第二個值(-2.2011534921064739)表示折舊系數,這是我嘗試用作排序鍵的值。

我知道attrgetter:

car_list.sort(key=attrgetter('depreciation_values'))

但這將基於depreciation_values的第一個值而不是第二個對列表進行排序。

有沒有一種方法可以根據折舊系數對所有對象進行排序?

您可以改用lambda來訪問要排序的確切值:

car_list.sort(key=lambda x: x.depreciation_values[1])

您可以定義__lt__() (小於)方法和其他比較方法,以根據所需的sort屬性返回布爾值,然后可以使用內置的sorted()或list.sort() “ ...排序例程保證使用__lt__ ()...”

class Car:
    ...
    def __lt__(self, other):
        self.depreciation_values[1] < other..depreciation_values[1]

暫無
暫無

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

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