2016-08-30 4 views
1

の第二の値に基づいて、オブジェクトのリストは、各オブジェクトが定義される:並べ替え、次のように私は車のオブジェクトのリストを持っているリスト属性

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の最初の値ではなく第二に基づいてリストを並べ替えます。

減価償却係数に基づいてすべてのオブジェクトを並べ替える方法はありますか?

あなたが代わりにソートするあなたが望む正確な値にアクセスするためにラムダを使用することができます
+1

@Delgan 'operator.attrgetter'オブジェクトはサブスクリプトできません。 – L3viathan

+0

@ L3viathan Oups、確かに。とにかくwilkesybearは最高のソリューションです。 – Delgan

+0

@Delganそれは完全に動作させることができますが、私はそれが標準ライブラリのためにあまりにも多くの魔法になると思う。 – L3viathan

答えて

10

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

華麗な、ありがとう! – Craig

関連する問題