【问题标题】:Read CSV file into python dictionary with duplicate entries将 CSV 文件读入带有重复条目的 python 字典
【发布时间】:2020-12-08 09:47:02
【问题描述】:

我有一个类似的 CSV 文件

以下代码读取 CSV 文件并将数据存储在字典中

from pprint import pprint

d = {}
with open("Book1.csv") as f:
    headers = [header.strip() for header in next(f).split(",")[1:]]
    for line in f:
        values = [value.strip() for value in line.split(",")]
        d[values[0]] = dict(zip(headers, values[1:]))
    pprint(d)

以上代码给出如下输出:

{
  '01-01-2020': {'name': 'z', 'time': '00:00:00', 'value': '23.2'},
  '02-01-2020': {'name': 'b', 'time': '00:05:00', 'value': '23.2'}
}

但问题是重复数据没有存储在字典中,它只存储来自 csv 文件的最后一条记录。 我想要从 csv 文件到字典的所有记录。

【问题讨论】:

  • date 列是您的密钥,如果密钥不是唯一的,您打算如何检索数据记录?我建议你看看其他数据结构。也许将每一行读入一个对象并将其存储在一个列表中。
  • 键应该相同,这就是为什么重复值不存储在字典中的原因。

标签: python csv dictionary


【解决方案1】:

您可以将列表放入您的 d 字典中,而不是单个元素。

from pprint import pprint

with open("Book1.csv") as f:
    headers = [header.strip() for header in next(f).split(",")[1:]]
    d = {}
    for line in f:
        values = [value.strip() for value in line.split(",")]
        d.setdefault(values[0], [])
        d[values[0]].append(dict(zip(headers, values[1:])))
pprint(d)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2021-04-01
    相关资源
    最近更新 更多