Skip to main content
 首页 » 编程设计

python之我如何按组排序

2025年05月04日13pander-it

我有这门课:

class Model: 
    name = None 
    price = None 

Model 实例的普通数组如下:

name ; price 
BMW 4-series ; 90 
BMW Z4 ; 190 
BMW X5 ; 220 
Lamborghini Miura ; 910 
Ferrari 458 Italia ; 580 
Ferrari California T ; 530 

等等..我需要用两种方式对这个数组进行排序:首先,按品牌(因此,BMW 产品排在第一位),然后按价格,而不删除之前的影响。

问题是,如果我执行 sort() 按 name 属性排序,然后按 price,第一个排序效果将丢失.我该怎么办?

请您参考如下方法:

您可以使用 operator.attrgetter 对对象列表进行排序

from operator import attrgetter 
 
m1 = Model(name='Lamborghini Miura', price=910) 
m2 = Model(name='Ferrari 458 Italia', price=580) 
lst = [m1, m2] 
 
lst.sort(key=attrgetter('name', 'price'))