我有一个字典,其中每个键都有一个列表作为值。问题是,每个列表的元素数量对于每个键都是不同的。我没有使用 csv 将它们写成行,而是将它们写在列中。假设字典的格式如下:
myDict = {'cli1':['9','1'], 'cli2':['6','8','4'], 'cli3':['7']}
我想按以下方式在 .csv 文件中打印:
cli1 cli2 cli3
9 6 7
1 8
4
我编写了以下程序来完成任务:
with open('PduDictOut.csv','wb') as file:
writer = csv.writer(file, delimiter='\t')
writer.writerow(myDict.keys())
for row in zip(*myDict.values()):
writer.writerow(list(row))
file.close()
但是这个程序给了我下面的输出:
cli1 cli2 cli3
9 6 7
我的程序使用列表中项目数最少的键,并为所有键提供相同数量的元素。我如何更改程序以生成我想要的输出。提前致谢。非常感谢您的帮助。顺便说一句,我正在使用 Python 2.6。
最佳答案
由于第三个列表只有一项,zip
会将结果截断为一个元组。
改为使用带有填充值的 itertools.izip_longest
:
from itertools import izip_longest
for row in izip_longest(*myDict.values(), fillvalue=''):
...
关于python - 在列中写入字典的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17916058/