Python 3.x 如何在Python中将多个具有不同键的词典导出到一个csv文件中?

Python 3.x 如何在Python中将多个具有不同键的词典导出到一个csv文件中?,python-3.x,csv,dictionary,export-to-csv,Python 3.x,Csv,Dictionary,Export To Csv,我正在尝试将多个具有不同字段名的词典写入一个csv文件。我希望将所有字典的键作为头放在csv文件的顶部,并将它们的所有值放在每一行中。但我的代码没有这样做,它将每个字典的键添加到单独的行中,并将其值添加到下面的行中 from bs4 import BeautifulSoup import os import re import csv for j in range(1,39): for i in rabge(1,10): ### calculate super_dict for e

我正在尝试将多个具有不同字段名的词典写入一个csv文件。我希望将所有字典的键作为头放在csv文件的顶部,并将它们的所有值放在每一行中。但我的代码没有这样做,它将每个字典的键添加到单独的行中,并将其值添加到下面的行中

from bs4 import BeautifulSoup
import os
import re
import csv

for j in range(1,39):
    for i in rabge(1,10):


### calculate super_dict for each html pages
            super_dict.update(social_urls)
            super_dict.update(metadata)
            super_dict.update(project_name)
            super_dict.update(bc_dict)
            super_dict.update(ind_dict)
            super_dict.update(pos_dict)
            super_dict.update(likes_dict)
            super_dict.update(memprof_dict)
            super_dict.update(video_link)
            super_dict.update(details_dict) 
            with open('output.csv', 'a') as csvfile:`
                fieldnames = super_dict.keys()
                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
                writer.writeheader()
                writer.writerow(super_dict)

问题是代码只编写一个字典,而
DictWriter
将其视为一行。一种可行的方法是从所有
dict
的键创建字段名,然后将每个
dict
作为单独的行写入

大概是这样的:

dicts = [social_urls, metadata, ...]
fieldnames = set()
# Update fieldnames with each dict's keys
# Use a set to filter duplicates.
fieldnames.update(*(d.keys() for d in dicts))
with open(myfile.csv, 'a', newline='') as f:
    writer= csv.DictWriter(f, fieldnames=fieldnames)
    for d in dicts:
        writer.writerow(d)

谢谢你,但我不想写像社交URL、元数据之类的格言,。。。排成一行。我想做的是将这些dict组合成super_dict,然后将super_dict写在单独的一行中。事实上,在上面代码中的每个迭代(内部for循环)中,super_dict都会发生变化,它是一个具有不同键的新dict,因此我想将其所有键添加到csv文件的头中,并在每个迭代中将其值写入单独的行中@蛇人谢谢你。我将您的代码用于super_dict,并在每次迭代中将super_dict附加到一个名为dicts=[]的dict列表中,然后将其写入csv文件,它就成功了。