【问题标题】:Appending a dictionary to a dictionary将字典附加到字典
【发布时间】:2023-02-24 08:41:23
【问题描述】:

我将 csv 文件作为字典打开,并尝试将其逐行附加到现有字典中。但它似乎没有附加。相反,现有字典只在循环中保存当前行。那么,我做错了什么?

buffer = {}
with open("small.csv", "r") as input:
  reader = csv.DictReader(input)
    for row in reader:
      buffer |= row
      print(buffer)

缓冲区字典应该将所有行存储在阅读器中,但它只保存当前行。我尝试使用 buffer.update(row) 但发现了相同的结果。

【问题讨论】:

  • buffer = {}那是集合,不是字典...
  • 另外,你为什么使用|=
  • @JohnGordon {} 是空字典,不是集合
  • 您从 DictReader 获得的每个字典都将具有相同的键集 - 因此您只是在第一次迭代之后的每次迭代中覆盖以前的值。
  • 你是什​​么意思“存储所有行”?是否应该将一列映射到该列的值列表?

标签: python


【解决方案1】:

您不能将“行”添加到字典中。你需要的是list,即:

buffer = []

然后

...
for row in reader:
    buffer.append(row)
...

最后,您的buffer 将是一个字典列表,其中每个字典都是单独的一行。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 2018-12-27
    • 1970-01-01
    • 2020-08-07
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2012-09-26
    相关资源
    最近更新 更多