我有一个名为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中的输出格式化为
Companys作为从B列开始的列标题和应用程序从第2行开始沿着A列向下行,每个应用程序的计数填入每个关联公司的列下的行中。
只是看起来没有正确分离列的输出或没有正确包含计数。
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
答案 0 :(得分:0)
最简单的方法是使用内置csv
和defaultdict
功能的Python。它的工作原理是首先根据应用程序而不是公司创建新的字典词典。然后使用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