'How to write nested dictionary in csv with python when the row contents are key values of related key (the header of each column)?
I have a dictionary called "output", there are some other dictionary nested in it as bellow:
>>> 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'])
I want to make a csv file consisting of a list of selected keys from output['posts'][0], output['posts'][0]['thread'] and output['posts'][0]['thread']['social'] with related values as each row content, I came up with this code:
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'])
It only works for first level of dictionary which is "output['posts'][0]['thread']", not other insiders, and also it doubles the number of rows which is 200 now instead of 100.
Please have a look at the output file I have stored on google drive for more tangible approach: file.csv
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|


