python - 在列中写入字典的所有值

标签 python

我有一个字典,其中每个键都有一个列表作为值。问题是,每个列表的元素数量对于每个键都是不同的。我没有使用 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/

相关文章:

Python 构建多个 arg 参数

python - for循环列表理解中的多个变量

python - 使用 beautifulsoup 解析来自 RSS feed 的所有子项元素

python - 无法弄清楚 TypeError : __init__() takes exactly 3 arguments (2 given)

python - 如何仅对没有扩展名的文件进行 glob?

Python 谷歌应用程序引擎 : Call specific method from yaml file?

python - 为什么右键单击会在圆圈中心创建一个橙色点?

python - np.logic_or 与reduce 返回不同的结果

python - 通过将某些列转置为行来 reshape pandas 数据框

python - 获取列表中部分匹配的索引