如何使用多个字典写入 csv?

Posted

技术标签:

【中文标题】如何使用多个字典写入 csv?【英文标题】:How to write to csv using multiple dictionaries? 【发布时间】:2021-02-02 22:37:30 【问题描述】:

我知道如何将一个字典写入 csv 文件,但如果我需要使用多个字典中的值怎么办?

目前这是我正在使用的代码:

for i , j in test.items():
            writer.writerow('Patient ID': i, 'Total visits': j)
for key,value in frq.items():
            writer.writerow('Total unique physicians': value)

这会在跳过一个部分时打印出 csv,并在第二个部分打印唯一的医生。 例如:

patient ID    total visits  total unique physicians
5                 2
5                 3
4                 4
5                 4
patient ID    total visits  total unique physicians
                                 1
                                 2
                                 3
                                 4

我想要这个:

patient ID    total visits  total unique physicians
5                 2              1
5                 3              2
4                 4              3
5                 4              4

有谁知道我可以使用多个字典编写 csv 文件的方法吗?我有其他这种格式的字典,我需要使用这种方法。我只能使用导入 csv、os 和字符串模块,所以没有 pandas。

【问题讨论】:

我将从研究 zip() 方法的作用开始。最坏的情况是,您只需“手动”执行此操作。但整个事情看起来有点可疑。您确定第三列的值真的“匹配”另一个字典的键列吗? @GhostCat 我把 zip 拿出来,我意识到我复制了旧代码。两者都是字典。是的,他们确实匹配。我运行了一个测试副本,它们是相同的。我的字典没有不同的键,但我有不同的值。 然后只需迭代第一个字典的键,并从您要在自己的循环中打印的所有字典中提取值? 如果它们匹配,对于每一行,从另一个字典更新一个字典以合并它们,然后将合并的字典与 writerow 一起使用。 【参考方案1】:

writer.writerow 将新行写入 CSV 文件并移至下一行。没有办法“返回”并使用writer.writerow 修改现有行。你首先需要用你需要的所有项目组成一个字典,然后用它调用writer.writerow。例如:

for ((patient_id, total_visits), (_, total_unique_physicians)) in zip(test.items(), frq.items()):
    writer.writerow(
        'Patient ID': patient_id,
        'Total visits': total_visits,
        'Total unique physicians': total_unique_physicians,
    )

不过,您需要注意testfrq 字典中的项目顺序相同。

【讨论】:

以上是关于如何使用多个字典写入 csv?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python 将字典写入 Dataflow 中的 Bigquery

Python:使用多个标题行写入 CSV

如何将带有嵌套字典的列表写入 csv 文件?

垂直读取和写入多个字典到csv文件

读取csv字典变成str了怎么办

以特定格式将“字典中的字典”写入 .csv 文件