【发布时间】:2019-07-20 22:58:42
【问题描述】:
我正在尝试将 dict 写入 csv,其中第一列填充键,第二列填充值,每行只有一个键/值。
import csv
myDict = {'key1': ['apple', 'kiwi'], 'key2': ['haha','lol'], 'key3': ['meat']}
f= open('file.csv', 'w', newline='')
with open('file.csv', 'w', newline='') as f:
writer = csv.writer(f,delimiter=',')
for key, values in myDict.items():
for value in values:
writer.writerow([key, value])
最佳输出应该是:
key1,apple
key1,kiwi
key2,haha
key2,lol
key3,meat
但是,当我运行代码时,它并不总是按照我想要的顺序写入键和值,它以随机方式将键和值写入 csv。
(背景:键和值的排序是预览编码的输出)
你能指出我在这里错过了什么吗? 提前致谢!
【问题讨论】:
-
使用
collections.OrderedDict -
或将 dict.keys() 转换为列表,对其进行排序并遍历排序后的列表。
-
尝试打印字典,你会发现每次打印都不一样,写入 csv 文件时也是如此。您可以使用@Gsk 提到的内容
-
请改用
csv.DictWriter(..., fieldnames=[<list of columns>]。参数fieldnames=定义了列的顺序。
标签: python csv sorting dictionary