要列出的词典中包含列表并打印到cs

2024-04-29 15:13:08 发布

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

我有一本字典,我想把它变成一个包含列表的列表,这样我就可以把它写进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中,作为每个元素的一行


Tags: csv列表字典排序itemssortedkey2key1
3条回答

给定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)]

我用{}和{}分别代替了{}和{},以避免隐藏内置名称

执行此操作的代码:

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

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


给定一个csvwriter对象,然后可以使用:

writer.writerows(my_list)

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

根据我对词典外观的假设,这将完成所需的转换,并将输出写入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

您可以添加元组(将它们彼此附加),并可以将列表转换为元组。因此,以下内容对我很有用:

>>> 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)]

相关问题 更多 >