繁体   English   中英

将字典写入 csv 或 xlsx 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 内置的csvdefaultdict功能。 它的工作原理是首先根据应用程序而不是公司创建一个新的词典词典。 然后它使用一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM