当前位置: 代码迷 >> python >> 将Python中的字典列表打印到.csv中的唯一行中
  详细解决方案

将Python中的字典列表打印到.csv中的唯一行中

热度:33   发布时间:2023-06-14 08:58:14.0

我目前有一个包含6个词典的列表,但计划在此列表中扩展到1000个词典。 每个字典具有相同的9个键,我希望它们可以作为我的列标题。 对于某些键,该值是字符串,例如城市名称,而对于其他键,该值是列表,对于每个字典(例如兴趣爱好),长度可能有所不同。

一个简短的示例,每个词典只有3个键(名称,城市,兴趣爱好):

list_of_dictionaries = [{'name' : 'John', 'city' : 'Las Vegas', 'hobbies' : ['running', 'gambling', 'weight-lifting']}, {'name' : 'Jane', 'city' : 'Chicago', 'hobbies' : ['video games', 'yoga']}, {'name' : 'Jack', 'city' : 'New York', 'hobbies' : ['sports', 'drinking', 'travel', 'fashion']}]

我想将此字典列表打印为CSV,将键值对的每个排列都放在单独的行中,例如以下格式:

名字城市爱好

约翰·拉斯维加斯跑步

约翰·拉斯维加斯赌博

约翰·拉斯维加斯举重

简·芝加哥视频游戏

简·芝加哥瑜伽

杰克·纽约体育

杰克·纽约喝酒

杰克纽约旅行

杰克·纽约时装

我对Python /编程比较陌生,意识到我可能采用的效率很低。 我已经尝试过csv模块,DictWriter等,但是什么也没有产生预期的结果。 我乐于接受任何事物,无论是仅仅是一个模块,还是重做列表/词典。 任何输入,不胜感激。

非常感谢你!

编辑:六个字典来自我正在遍历的六个文件。 因此,对于每个文件,我有9个字符串/列表,我将它们组合在一起作为一个字典,然后将这6个字典附加到一个列表中。

詹姆士

检查是否有帮助...编写自己的csv编写器...

for element in list_of_dictionaries:
for i in range(len(element['hobbies'])):
    print("{0} {1} {2}".format(element['name'],element['city'],element['hobbies'][i]))

使用csv:

import csv

list_of_dictionaries = [
{'name' : 'John', 'city' : 'Las Vegas', 'hobbies' : ['running', 'gambling', 'weight-lifting']},
{'name' : 'Jane', 'city' : 'Chicago', 'hobbies' : ['video games', 'yoga']},
{'name' : 'Jack', 'city' : 'New York', 'hobbies' : ['sports', 'drinking', 'travel', 'fashion']}
]

with open('out.csv', 'wb') as csvfile:
    csv = csv.writer(
        csvfile,
        delimiter=',',
        quotechar='"',
        quoting=csv.QUOTE_MINIMAL
    )

    csv.writerow(['Name','City','Field1','Field2','...'])

    for item in list_of_dictionaries:
        # Include any multi-value fields as:
        # for field1, field2, ... in zip(item['field1', 'field2', ...]):
        #    csv.writerow([item['name'], item['city'], field1, field2, ...])
        for hobby in item['hobbies']:
            csv.writerow([item['name'], item['city'], hobby])

编辑:允许任意数量的多值字段。