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

Python读取CSV构造字典列表时所有条目重复为最后一行的问题

问题原因

核心问题出在字典的初始化位置:

  • 你在for循环外部就创建了registro字典,Python中字典是可变引用对象,整个循环过程中你反复修改的都是内存里的同一个字典实例。
  • 每次调用camion.append(registro)时,追加到列表的不是当前行数据的独立拷贝,而是指向这同一个字典的引用。
  • 当循环处理到最后一行CSV数据时,你把这个字典的键值更新成了最后一行Limon的对应信息,列表里之前存的所有引用指向的内容会同步变成最后一行的值,最终输出就全是重复的最后一条记录。
修复方法

把registro = {}的初始化语句移到for循环内部,保证每处理一行数据就创建一个全新的独立字典,这样追加到列表里的每个元素都是互不干扰的独立对象。
修复后的完整代码:

import csv
from pprint import pprint

def leer_camion(nombre_archivo):
    camion = []
    with open(nombre_archivo, "rt") as f:
        filas = csv.reader(f)
        encabezado = next(filas)
        for fila in filas:
            # 每次处理新行时初始化新字典
            registro = {}
            registro[encabezado[0]] = fila[0]
            registro[encabezado[1]] = int(fila[1])
            registro[encabezado[2]] = float(fila[2])
            camion.append(registro)
    return camion

camion = leer_camion('camion.csv')
pprint(camion)

运行后即可得到每行数据对应独立字典的正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:06:30