用Python将多个字典写入CSV文件并使用一个表头
我正在尝试把多个字典写入一个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)