jgu*_*man 5 python csv dictionary ordereddictionary
我有一个有序的字典,正如人们所料,它包含许多键值对.我需要将有序字典的内容解析为CSV格式,其中键位于顶行,其各自的值位于第二行.我有第一排,但我不知道如何写第二行.在OrderedDict的值是你所期望(它是什么样子的终端打印出来)([(a, 1), (b, 2), (c, 3)]).这就是我所拥有的:
import csv
with open("frequencies.csv", "w") as outfile:
csvwriter = csv.writer(outfile)
csvwriter.writerow(myDict)
Run Code Online (Sandbox Code Playgroud)
我尝试迭代这些值并将它们附加到列表中,但是列表没有维护有序字典的原始顺序,据我所知,这将使得从列表中打印值非常困难到CSV,以便他们匹配正确的密钥.
在此先感谢您的帮助!
从 Python 3.7 开始,字典保留顺序,因此您可以使用 dict() 将有序字典转换为可用字典。
with open("frequencies.csv", "w") as outfile:
csvwriter = csv.writer(outfile)
csvwriter.writerow(dict(myDict))
csvwriter.writerow(dict(myDict).values())
Run Code Online (Sandbox Code Playgroud)
好吧,我将在这里回答我自己的问题.有几个人很友好地在评论中提出建议.正如所建议的那样,我正在努力与熊猫一起完成这项工作.然而,就在我这样做的时候,我想到我可以做到这一点,而无需了解Pandas模块的来龙去脉.这是我想出的:
import csv
keys, values = [], []
for key, value in myOrderedDict.items():
keys.append(key)
values.append(value)
with open("frequencies.csv", "w") as outfile:
csvwriter = csv.writer(outfile)
csvwriter.writerow(keys)
csvwriter.writerow(values)
Run Code Online (Sandbox Code Playgroud)
所以这里是这里发生的事情:
创建两个与我的有序字典中的键和值对应的空列表
迭代我的有序字典中的键/值对,将每对添加到其各自的列表中.因为Python中的列表保留了它们的顺序,所以这确保了任一列表中相应索引的项目都属于一起
将密钥写入我的CSV的第一行,将值写入第二行
我确信有更优雅的方法可以做到这一点,但这足以达到我的目的.
| 归档时间: |
|
| 查看次数: |
7278 次 |
| 最近记录: |