【问题标题】:How to write nested dictionary in csv with python when the row contents are key values of related key (the header of each column)?当行内容是相关键的键值(每列的标题)时,如何用python在csv中编写嵌套字典?
【发布时间】:2023-04-04 23:53:01
【问题描述】:

我有一本名为“输出”的字典,其中嵌套了一些其他字典,如下所示:

>>> output.keys() 
dict_keys(['posts', 'totalResults', 'moreResultsAvailable', 'next', 'requestsLeft', 'warnings'])

>>> output['posts'][0].keys() 
dict_keys(['thread', 'uuid', 'url', 'ord_in_thread', 'parent_url', 'author', 'published', 'title','text', 'highlightText', 'highlightTitle', 'highlightThreadTitle', 'language', 'external_links', 'external_images', 'entities', 'rating', 'crawled', 'updated'])

>>> output['posts'][0]['thread'].keys() 
dict_keys(['uuid', 'url', 'site_full', 'site', 'site_section', 'site_categories', 'section_title', 'title', 'title_full', 'published', 'replies_count', 'participants_count', 'site_type', 'country', 'spam_score', 'main_image', 'performance_score', 'domain_rank', 'reach', 'social'])

>>> output['posts'][0]['thread']['social'].keys() 
dict_keys(['facebook', 'gplus', 'pinterest', 'linkedin', 'stumbledupon', 'vk'])

我想制作一个 csv 文件,其中包含来自 output['posts'][0]output['posts'][0]['thread ']output['posts'][0]['thread']['social'] 将相关值作为每行内容,我想出了以下代码:

post_keys = output['posts'][0].keys()
post_thread_keys = output['posts'][0]['thread'].keys()
social_keys = output['posts'][0]['thread']['social'].keys()

with open('file.csv', 'w', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=post_thread_keys)
    writer.writeheader()

    for i in range(len(output['posts'])):
         for key in output['posts'][i]['thread']:
            writer.writerow(output['posts'][i]['thread'])

它只适用于 "output['posts'][0]['thread']" 的第一级字典,不适用于其他内部人员,而且它的行数加倍现在是 200 而不是 100。

现在结果是这样的:

希望是这样的:

请查看我存储在谷歌驱动器上的输出文件以获得更切实的方法:
file.csv

【问题讨论】:

  • 包含字典的删节样本以获得更好的答案。
  • 另外请附上您预期输出的样本。
  • 我已经添加了当前输出的结果和想要的图像。
  • 你能做到print(output) 并给我们一个输出的链接吗?你可以使用类似pastebin
  • 我在驱动器上放了一个输出文件,请看一下。

标签:
python
csv
dictionary
nested
write