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

读取CSV为字典后逐行追加至现有字典仅存当前行,求排查

问题解决:CSV字典行无法追加到buffer的原因及方案

为什么buffer |= row和buffer.update(row)没效果

字典的核心特性是键的唯一性,当你用这两个方法时,若row里的键和buffer已有的键重复,新值会直接覆盖旧值。而CSV按字典读取时,每行的键都是表头字段,所以每次循环都是用新行的字段值覆盖buffer里的同键值,自然只会保留最后一行的数据。

正确实现方式

根据需求分两种场景处理:

场景1:保存所有行的字典(最常用)

把buffer定义为列表而非字典,每次循环将行字典追加到列表中:

import csv

buffer = []
with open('your_file.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        buffer.append(row)

# 此时buffer是包含所有行字典的列表
print(buffer)

场景2:将同键的多行值合并为列表

如果需要把每行同键的值合并到buffer的对应键下,要手动遍历处理每个键:

import csv

buffer = {}
with open('your_file.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        for key, value in row.items():
            if key not in buffer:
                buffer[key] = []
            buffer[key].append(value)

# 此时buffer的每个键对应一个包含所有行该字段值的列表
print(buffer)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:24:41