我目前有一个包含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等,没有任何东西产生了预期的结果。我对任何事情都持开放态度,无论它只是一个模块,还是重新编写列表/字典。任何意见都非常感谢。
非常感谢!
编辑:六个词典来自我正在迭代的六个文件。所以对于每个文件,我有九个字符串/列表,我将它们组合在一起作为字典,然后将六个字典一起添加到一个列表中。
詹姆斯
答案 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])
修改强> 允许任意数量的多值字段。