python-3.x - 按对象属性拆分对象列表
问题描述
我无法弄清楚如何按对象值拆分对象列表。例如:
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
解决方案
弄清楚了 :
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()
推荐阅读
- javascript - 在 1 组或 2 组括号之间获取文本的表达式?[Javascript]
- android - GoogleService 初始化失败,状态:10,缺少来自名称为 google_app_id 的字符串资源的 google app id 值
- android - android从不是导航抽屉的活动中打开一个位于导航抽屉中的片段
- c# - C# HttpClient.SendAsync 等待抛出 NullReferenceException
- c# - 在单列选择中获取整行
- c++ - 复制 std:set 的好方法
到 std::set - android - Android 版本可以在 Genymotion 模拟器上更新吗?
- ios - Unity 应用程序启动时使用 Vungle 的 NSInvalidArgumentException
- python - 现有配置文件上的 Django 配置文件更新
- javascript - 使用 JavaScript 的计时器库