用Python将多个字典写入CSV文件并使用一个表头

1 投票
1 回答
2490 浏览
提问于 2025-04-18 09:38

我正在尝试把多个字典写入一个CSV文件,想要的效果是表头(也就是字典的键)只写一次,而每一行(也就是字典的值)根据键来写。我已经搞定了两个字典的情况,但如果我有多个字典需要写入该怎么办呢?

我正在处理推文,这些推文会被转换成JSON格式,所以我想最终得到一个CSV文件,里面的数据是按照每个JSON键来排序的。这里有一个更详细的解释我想做的事情(在Python中将多个JSON写入CSV - 字典到CSV)。我想要的结果是这样的,但可能会有成千上万行数据(如果可以的话,最好按键排序):

表格

这是我处理两个字典的基本代码:

import csv

my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4': 'value4', 'key5': 'value5', 'key6': 'value6', 'key7': 'value7'}
my_dict2 = {'key1': 'value1A', 'key2': 'value2A', 'key3': 'value3A', 'key4': 'value4A', 'key5': 'value5A', 'key6': 'value6A', 'key7': 'value7A'}

with open('mycsvfile.csv', 'wb') as f:
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)
    if my_dict.keys() == my_dict2.keys():
        w.writerow(my_dict2)

print my_dict

附言:我还是个初学者!

1 个回答

2

你可以把多个字典放在一个列表里。然后,你可以遍历这个列表,只写出那些键匹配的行。大概是这样的:

keys = ['key1', 'key2', 'key3', 'key4', 'key5'] # and so forth..

dictionaries = [my_dict, my_dict2] # Just an example, you probably build this list while you stream the tweets.

with open('mycsvfile.csv', 'wb') as f:
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    for d in [x for x in dictionaries if x.keys() == keys]: # only matching keys.
       w.writerow(d)

撰写回答