如何将字典列表转换为Python class?现有代码报错求解
字典列表转Python类实例的解决方法
你当前的代码报错是因为把整个字典列表直接传给了Dict_to_Class的构造方法,而类的__init__方法是按单个字典处理的——循环for key in s_dict时,key会取列表里的每一个字典,接着s_dict[key]试图用字典作为列表的索引,这在Python里是不允许的,所以触发了"无法使用字典作为列表索引"的错误。
修正后的代码
保留原类(它适合处理单个字典),在主程序中遍历字典列表,逐个转换为类实例:
class Dict_to_Class(object): def __init__(self, s_dict): for key in s_dict: setattr(self, key, s_dict[key]) if __name__ == '__main__': s_dict_list = [{'cs': '10', 'ca': '11', 'cb': '12', 'cc': 'same'}, {'cs': '114', 'ca': '121', 'cb': '132', 'cc': 'diff'}, {'cs': '20', 'ca': '21', 'cb': '22', 'cc': 'same'}, {'cs': '210', 'ca': '211', 'cb': '212', 'cc': 'diff'}, {'cs': '10', 'ca': '115', 'cb': '12', 'cc': 'same'}, {'cs': '101', 'ca': '11', 'cb': '172', 'cc': 'diff'}, {'cs': '10', 'ca': '181', 'cb': '129', 'cc': 'same'}, {'ca': '11', 'cb': '12', 'cc': 'same'}] # 遍历字典列表,逐个生成类实例 result_list = [Dict_to_Class(item) for item in s_dict_list] # 验证功能,示例:打印第一个实例的类型和属性 print(type(result_list[0])) print(result_list[0].cs, result_list[0].cc)
说明
- 修正后用列表推导式遍历原字典列表,每个字典单独传入
Dict_to_Class生成实例,最终得到类实例的列表result_list。 - 可以通过
实例.属性名的方式访问每个实例的属性,比如result_list[3].ca就能拿到第四个实例的ca属性值。
内容的提问来源于stack exchange,提问作者Manatsa Mbanje
相关产品推荐
相关产品推荐

