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

将CSV转为日期为键、多元组列表为值的字典时仅获单个值问题

解决CSV转日期键字典时丢失同日期多条记录的问题

问题原因

你用字典推导式写的代码之所以会丢失同日期的多条记录,是因为字典的键具有唯一性——每次遇到重复的日期键,新的[(rows[1],rows[2],rows[3])]会直接覆盖之前对应的值,最后每个日期只能保留最后一行的记录。

解决方案1:普通循环处理

直接遍历CSV每行数据,判断日期是否已在字典中,存在就追加记录,不存在就初始化列表:

import csv

# 替换成你的CSV文件路径
with open('vaccine_data.csv', 'r') as vaccine_date_file:
    vaccine_data_reader = csv.reader(vaccine_date_file)
    mydict = {}
    for row in vaccine_data_reader:
        date_key = row[0]
        record_tuple = (row[1], row[2], row[3])
        if date_key in mydict:
            mydict[date_key].append(record_tuple)
        else:
            mydict[date_key] = [record_tuple]

解决方案2:用collections.defaultdict简化代码

借助defaultdict可以自动为不存在的键初始化空列表,代码更简洁:

import csv
from collections import defaultdict

with open('vaccine_data.csv', 'r') as vaccine_date_file:
    vaccine_data_reader = csv.reader(vaccine_date_file)
    mydict = defaultdict(list)
    for row in vaccine_data_reader:
        mydict[row[0]].append( (row[1], row[2], row[3]) )

# 可选:如果需要将defaultdict转为普通字典
mydict = dict(mydict)

两种方法都能得到你期望的字典格式:同一日期键对应包含所有相关元组的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:05:26