字典列出里面的列表和打印到csv

时间:2016-07-21 17:35:26

标签: python csv dictionary

我有一本字典,我希望变成一个包含列表的列表,这样我就可以写入csv了,但是我做了什么,它没有用。

我使用sorted(dllist.items())将它们排序为

[(key1, value1), (key2, value2), ... ,(keyN, valueN)]

这就是我所拥有的,

dict = [('aaa', [5787, 40, 1161, 1222]), 
 ('aab', [6103, 69, 810, 907]), 
 ('aac', [3081, 41, 559, 638]), 
 ('aae', [1011000, 191, 411, 430])]

我希望它是

list = [(aaa, 5787, 40, 1161, 1222),
 ('aab',6103, 69, 810, 907),
 ('aac', 3081, 41, 559, 638), 
 ('aae', 1011000, 191, 411, 430)]

出错了什么?以及如何最简单地将它作为每行元素的行存储在csv中?

3 个答案:

答案 0 :(得分:0)

鉴于sorted的输出,这样做:

>>> my_dict = [('aaa', [5787, 40, 1161, 1222]), ('aab', [6103, 69, 810, 907]), ('aac', [3081, 41, 559, 638]), ('aae', [1011000, 191, 411, 430])]
>>> my_list = [tuple([i[0]] + i[1])  for i in my_dict]
>>>
>>> my_list
[('aaa', 5787, 40, 1161, 1222), ('aab', 6103, 69, 810, 907), ('aac', 3081, 41, 559, 638), ('aae', 1011000, 191, 411, 430)]

我分别使用my_listmy_dict代替listdict,以避免阴影内置名称。

实现这一诀窍的代码:

[tuple([i[0]] + i[1])  for i in my_dict]
#      |<- put first item in a list
#               |<-  join with second item

将每个tuple中的第一项放入列表中,将连接与元组中已经是列表的第二项连接。在列表解析中对所有元组重复该操作。

鉴于 csv writer对象,您可以使用:

writer.writerows(my_list)

将所有项目一次性写入 csv 文件。

答案 1 :(得分:0)

您可以添加元组(将它们相互附加),您可以将列表转换为元组。所以,以下内容对我有用:

>>> x = [('a', [1,2,3]), ('b', [4,5,6])]
>>> x
[('a', [1, 2, 3]), ('b', [4, 5, 6])]
>>> y = [(i,) + tuple(j) for i, j in x]
>>> y
[('a', 1, 2, 3), ('b', 4, 5, 6)]

答案 2 :(得分:0)

考虑到我对你的字典看起来的假设,这应该进行你想要的转换并将输出写入CSV文件:

import csv

d = { 'aaa': [5787, 40, 1161, 1222], 'aab': [6103, 69, 810, 907] }
rows = [[k] + v for k, v in sorted(d.items())]

with open("out.csv", "w") as out:
    writer = csv.writer(out)
    for row in rows:
        writer.writerow(row)

# out.csv:
# aaa,5787,40,1161,1222
# aab,6103,69,810,907