![](/img/trans.png)
[英]How to write Dictionary AND list to csv or .xlsx with python
[英]Write dictionary to csv or xlsx python
我有一本名为 master 的字典,其值的格式为 。
{
'Company': {
'App': 4,
'App2': 5,
'App3': 82,
etc}
'Company2': {
'App': 3,
'App2': 1,
'App3': 48,
etc}
'Company3' etc
我尝试了几个不同的答案:
with open('test.csv', 'wb') as f: writer = csv.writer(f) for row in myDict.iteritems(): writer.writerow(row)
与此相关的其他问题,但没有给出我正在寻找的输出。 需要将 csv 或 xslx 中的输出格式化为
公司作为列标题从 B 列开始穿过,应用程序从 A 列中的行开始,从第 2 行开始,每个应用程序的计数填充每个关联公司的列下的行。
似乎只得到未正确分成列的输出或未正确包含计数的输出。
master = {} business_list = ['Company1','Company2','Company3'etc] for business in business_list: selected_business_apps = {} curr_business_apps = business_map.get(business) freqs = Counter (curr_business_apps) for key, val in freqs.items(): if key in app_map.keys(): selected_business_apps[key] = val master[business] = selected_business_apps
这将是最容易使用 Python 内置的csv
和defaultdict
功能。 它的工作原理是首先根据应用程序而不是公司创建一个新的词典词典。 然后它使用一个csv.DictWriter()
,它接受一个字典并将其转换为 CSV 格式的输出行:
from collections import defaultdict
import csv
master = {
'Company': {'App': 4, 'App2': 5, 'App3': 82},
'Company2': {'App': 3, 'App2': 1, 'App3': 48}}
all_apps = defaultdict(dict)
# Create a dictionary in terms of apps e.g. {'App' : {'Company' : 4, 'Company2' : 3}}
for company, apps in master.items():
for app, count in apps.items():
all_apps[app][company] = count
with open('output.csv', 'wb') as f_output:
csv_output = csv.DictWriter(f_output, fieldnames=['App'] + sorted(master.keys()))
csv_output.writeheader()
for app, row in sorted(all_apps.items()):
row.update({'App': app})
csv_output.writerow(row)
这将为您提供一个output.csv
文件,其中包含:
App,Company,Company2
App,4,3
App2,5,1
App3,82,48
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.