如何使用多个字典写入 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,
)
不过,您需要注意test
和frq
字典中的项目顺序相同。
【讨论】:
以上是关于如何使用多个字典写入 csv?的主要内容,如果未能解决你的问题,请参考以下文章