首页 > 解决方案 > 按对象属性拆分对象列表

问题描述

我无法弄清楚如何按对象值拆分对象列表。例如:

class car:
    cid=0
    type="undef"

    def  __init__(self, cid,type):
        self.cid=cid
        self.type=type

    def show(self):
        print("car id : "+str(self.cid)+" car type : "+self.type)

car_list=[]
car_list.append(car(34,"Suv"))
car_list.append(car(47,"Suv"))
car_list.append(car(48,"Suv"))
car_list.append(car(42,"hb"))
car_list.append(car(40,"hb"))
car_list.append(car(37,"sed"))
car_list.append(car(77,"sed"))
car_list.append(car(22,"sed"))

我想分成car_list每种类型的汽车列表。然后在列表之前打印汽车的类型。预期输出:

SUV
==========================
car id : 34 car type : Suv
car id : 47 car type : Suv
car id : 47 car type : Suv
HB
==========================
car id : 47 car type : hb
car id : 47 car type : hb
SED
==========================
car id : 47 car type : sed
car id : 47 car type : sed
car id : 47 car type : sed

标签: python-3.xlistcollectionssplit

解决方案


弄清楚了 :

from collections import groupby 
grouped_car_list= groupby(car_list, key = lambda car : car.type)

for  type , cars in grouped_car_list:
    print(type)
    print("=============================")
    for car in cars:
        car.show()


推荐阅读