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

Python读取CSV后字典仅返回最后一行数据问题求助

问题原因与解决方案

核心问题

  1. 字典键被覆盖:你用单一字典mydict存储数据,每次处理一行时,相同列名的键会被当前行的计算值覆盖,最终只保留最后一行的结果。
  2. 缩进错误:for line in rcsv循环写在with代码块外部,文件关闭后再迭代rcsv不符合规范,可能导致读取异常。

解决方案

根据需求选择以下两种方式:

方式1:返回所有行的处理后字典列表

这种方式保留每一行的完整数据,适合逐行处理的场景:

import csv

def csvRead():
    processed_data = []
    with open('data.csv', 'r', newline='') as f:
        rcsv = csv.DictReader(f, delimiter=',')
        for line in rcsv:
            # 生成当前行的处理后字典
            row_dict = {k: float(v)*2 for k, v in line.items()}
            processed_data.append(row_dict)
            print(row_dict.items())
    return processed_data

print('current: ', csvRead())

运行后会输出所有行的处理结果,返回值是包含每行字典的列表。

方式2:按列存储所有处理后的值

这种方式将同一列的所有值整理到对应键的列表中,适合按列统计的场景:

import csv

def csvRead():
    mydict = {}
    with open('data.csv', 'r', newline='') as f:
        rcsv = csv.DictReader(f, delimiter=',')
        # 初始化每个列名对应的空列表
        for header in rcsv.fieldnames:
            mydict[header] = []
        for line in rcsv:
            for k, v in line.items():
                mydict[k].append(float(v)*2)
                print(mydict.items())
    return mydict.items()

print('current: ', csvRead())

运行后每个列名将对应所有行的处理后值组成的列表。

内容的提问来源于stack exchange,提问作者user18772609

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:35:15