将Python字典写入CSV列:键写入第一列,值写入第二列

6
我正在寻找一种方法将Python字典写入列中(键在第一列,值在第二列)。这个链接展示了如何将列表写入列中,但我想知道是否有一种方法可以不将我的字典转换为两个压缩的列表来实现这一点。
myDict = {1:'a', 2:'b', 3:'c'}

keyList = myDict.keys()
valueList = myDict.values()

rows = zip(keyList, valueList)

with open('test.csv', 'wb') as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerow(row)

期望结果:

1;a
2;b
3;c
2个回答

15

您可以在Python 2.X中简单地执行以下操作:

with open('test.csv', 'wb') as f:
    writer = csv.writer(f)
    for row in myDict.iteritems():
        writer.writerow(row)

对于 Python 3.X 版本,请将 for 循环行更改为 for row in myDict.items():


3

一个略微更短的版本是执行以下操作:

rows = myDict.iteritems()

(对于Python 3,使用 .items()。)
要获取 ; 分隔符,请将 delimiter 传递给 csv.reader csv.writer 。 在这种情况下:
writer = csv.writer(f, delimiter=';')

这将产生1;2;3\na;b;c,而不是期望的输出。 - zsquare
谢谢!我花了很长时间才找到一个合适的答案,你帮助我找到了解决方案:with open('manifesttest2.csv', "wb") as f: writer = csv.writer(f, delimiter=',') writer.writerow(amazonData) - Michael Romrell
@MichaelRomrell CSV的读取器和写入器对象默认应该使用,作为分隔符(CSV代表逗号分隔值)。不传递参数它能正常工作吗? - Anorov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接