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
相关产品推荐
相关产品推荐

