Python 如何按组排序?
我有这门课:Python 如何按组排序?,python,sorting,python-3.x,Python,Sorting,Python 3.x,我有这门课: class Model: name = None price = None 和模型实例的普通数组,如下所示: name ; price BMW 4-series ; 90 BMW Z4 ; 190 BMW X5 ; 220 Lamborghini Miura ; 910 Ferrari 458 Italia ; 580 Ferrari California T ; 530 等等。。我需要以两种方式对这个数组进行排序:首先,按品牌,所以,宝马的项目首先出现,然后按
class Model:
name = None
price = None
和模型实例的普通数组,如下所示:
name ; price
BMW 4-series ; 90
BMW Z4 ; 190
BMW X5 ; 220
Lamborghini Miura ; 910
Ferrari 458 Italia ; 580
Ferrari California T ; 530
等等。。我需要以两种方式对这个数组进行排序:首先,按品牌,所以,宝马的项目首先出现,然后按价格出现,而不删除之前的影响
问题是,若按名称属性排序,然后按价格排序,那个么第一个排序效果将丢失。我该怎么办?所有排序函数都采用可选的kwarg键。它可以与元组自然排序的事实结合使用,以构建匿名lambda函数,如下所示:
lst = [Model(name='BMW 4-series',price=90), ... ]
lst.sort(key=lambda m: (m.name, m.price))
所有排序函数都采用可选的kwarg键。它可以与元组自然排序的事实结合使用,以构建匿名lambda函数,如下所示:
lst = [Model(name='BMW 4-series',price=90), ... ]
lst.sort(key=lambda m: (m.name, m.price))
您可以使用
您可以使用
您可以使用操作员模块:
from operator import attrgetter
model1 = Model('BMW Z4', 190)
model2 = Model('BMW X5', 220)
obj_list = [model1, model2)
sorted(obj_list, key=attrgetter('name', 'price'))
请参阅:您可以使用操作员模块:
from operator import attrgetter
model1 = Model('BMW Z4', 190)
model2 = Model('BMW X5', 220)
obj_list = [model1, model2)
sorted(obj_list, key=attrgetter('name', 'price'))
请参阅:我实际上不知道您可以为。。。getters@AdamSmith对另外,我认为attrgetter有点快。它当然更快。我实际上不知道您可以为。。。getters@AdamSmith对另外,我认为attrgetter有点快。它当然更快。