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

Python读取CSV文件转为字典时如何保留重复键的全部对应值

解决方案

Python 原生字典的键具有唯一性,对同一个键重复赋值会直接覆盖旧值,要保留重复键的所有值,只需要把每个键对应的存储结构调整为列表即可,同一个键的所有值都会按读取顺序保存在对应的列表中。

基础实现(无需引入额外工具)

直接使用标准库csv模块配合普通字典实现:

import csv

result = {}
# 替换为你的CSV文件实际路径
with open("test.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    # 跳过表头行
    next(reader)
    for row in reader:
        # 可选:跳过空行
        if not row:
            continue
        key = row[0]
        value = row[1]
        if key in result:
            # 键已存在,追加值到列表
            result[key].append(value)
        else:
            # 键不存在,新建列表保存当前值
            result[key] = [value]

简化实现(使用defaultdict)

使用collections.defaultdict可以省略判断键是否存在的逻辑,代码更简洁:

import csv
from collections import defaultdict

# 定义字典的默认值为空列表
result = defaultdict(list)
with open("test.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    next(reader)
    for row in reader:
        if not row:
            continue
        key = row[0]
        value = row[1]
        result[key].append(value)

# 可选:转为普通字典
result = dict(result)

如果你需要完全保留重复键的独立键值对(不合并同键的值),可以自定义继承MutableMapping的类实现支持重复键的字典,不过绝大多数业务场景下使用「键对应值列表」的方案兼容性更好,也更方便后续数据处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:02