Python中如何将字典列表转换为自定义Person类的对象列表
实现方案说明
首先明确:遍历列表逐个构造是底层必然执行的逻辑,但你不需要手写完整的for循环控制逻辑,有更简洁的实现方式。
前置准备:自定义Person类示例
首先给出基础的Person类定义参考:
class Person: def __init__(self, Name, Age, Role): self.name = Name # 可选:将API返回的字符串类型年龄转为数值 self.age = int(Age) self.role = Role
如果你的类字段较多,还可以用dataclass简化定义,无需手动写构造方法:
from dataclasses import dataclass @dataclass class Person: Name: str Age: str Role: str
最简实现方案:列表推导式
直接用列表推导式+字典解包即可一行完成转换,是最常用的写法:
# api_response就是你从接口拿到的字典列表 person_instance_list = [Person(**item) for item in api_response]
这里**item会自动把字典的键值对作为命名参数传给Person类的构造方法,前提是字典的键名和构造方法的参数名完全一致。
如果键名和参数名不匹配,可以手动做字段映射:
person_instance_list = [ Person( name=item['Name'], age=int(item['Age']), role=item['Role'] ) for item in api_response ]
可选方案:map函数
如果你偏好函数式写法,可以用map实现:
person_instance_list = list(map(lambda x: Person(**x), api_response))
内容的提问来源于stack exchange,提问作者Shmolok
相关产品推荐
相关产品推荐

