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

时间:2015-10-24 04:14:57

标签: python list python-3.x dictionary export-to-csv

我目前有一个包含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,每个键值对的排列在一个单独的行中,如下面的格式:

  

名称城市爱好

     

约翰拉斯维加斯跑步

     

约翰拉斯维加斯赌博

     

约翰拉斯维加斯举重

     

简芝加哥电子游戏

     

简芝加哥瑜伽

     杰克纽约体育

     杰克纽约喝酒

     

Jack New York Travel

     杰克纽约时装

我对Python /编程比较陌生,并意识到我可能会采取一种非常低效的方法。我已经尝试过csv模块,DictWriter等,没有任何东西产生了预期的结果。我对任何事情都持开放态度,无论它只是一个模块,还是重新编写列表/字典。任何意见都非常感谢。

非常感谢!

编辑:六个词典来自我正在迭代的六个文件。所以对于每个文件,我有九个字符串/列表,我将它们组合在一起作为字典,然后将六个字典一起添加到一个列表中。

詹姆斯

2 个答案:

答案 0 :(得分:0)

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

NSInteger nine = 9;
float ten = 10.0;

NSNumber *nineFromInteger = [[NSNumber alloc] initWithInteger:nine];
NSNumber *tenFromFloat = [NSNumber numberWithFloat:ten];

答案 1 :(得分:0)

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

修改 允许任意数量的多值字段。