把字典的所有值都写在列中

2024-05-29 02:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,其中每个键都有list作为值。问题是,对于每个键,每个列表的元素数是不同的。我不是用csv写成行,而是用列来写。假设字典的格式如下:

myDict = {'cli1':['9','1'], 'cli2':['6','8','4'], 'cli3':['7']}  

我想以以下方式在.csv文件中打印:

^{pr2}$

为了完成这项任务,我编写了以下程序:

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    

我的程序使用列表中最少项数的键,并为所有键提供相同数量的元素。如何更改程序以生成所需的输出。提前谢谢。非常感谢你的帮助。顺便说一句,我使用的是python2.6。在


Tags: csv程序元素列表字典格式mydictlist
2条回答

由于第三个列表只有一个项,zip将把结果截断为一个元组。在

itertools.izip_longest与填充值一起使用:

from itertools import izip_longest

for row in izip_longest(*myDict.values(), fillvalue=''):
    ...

您可以使用这个:

myDict = {'cli1':['9','1'], 'cli2':['6','8','4'], 'cli3':['7']}

values = map(None, *myDict.values())

输出:[('6', '7', '9'), ('8', None, '1'), ('4', None, None)]

将逻辑位改为None,同时将其写入csv。在

相关问题 更多 >

    热门问题