You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字典列表转换为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:55:17