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

如何用Python内置函数将CSV转为指定格式的字典列表?

解决CSV转特定格式字典列表的问题

你需要将CSV文件转换为[{col1: [values]}, {col2: [values]}, ...]格式的字典列表,但当前代码生成的是每个字段对应一个单键字典的列表,和预期不符。

问题分析

现有代码的问题在于:

  • 循环每一行数据时,又嵌套循环每个表头,每次都新建一个单键字典并添加到结果列表
  • 最终得到的是所有字段的零散单键字典,而不是按列聚合的列表

修正后的代码

result = []
with open(filename, 'r') as f:
    # 读取表头并处理
    headers = f.readline().strip().split(',')
    # 初始化字典:键为表头,值为对应列的空列表
    column_dict = {header: [] for header in headers}
    
    # 遍历每一行数据,填充各列的列表
    for line in f:
        line_values = line.strip().split(',')
        # 匹配表头和对应的值,添加到列表
        for header, value in zip(headers, line_values):
            column_dict[header].append(value)
    
    # 将列字典转换为要求的列表格式:每个元素是单个键值对的字典
    result = [{key: value} for key, value in column_dict.items()]

代码说明

  1. 初始化列字典:先创建一个以表头为键、空列表为值的字典,用于收集每一列的所有数据
  2. 填充数据:逐行读取CSV内容,拆分后将每个值对应添加到表头的列表中,完成按列聚合
  3. 转换格式:通过列表推导式,把聚合好的列字典拆分为单个键值对的字典列表,完全符合预期格式

示例效果

假设CSV内容为:

col1,col2,col3
16,3779,60.5
17,3800,61.0

运行后result的结果为:

[{'col1': ['16', '17']}, {'col2': ['3779', '3800']}, {'col3': ['60.5', '61.0']}]

内容的提问来源于stack exchange,提问作者Amazing-Grace Umoren

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:20:24