将字典写入csv或xlsx python

2024-06-02 06:50:09 发布

您现在位置: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


Tags: appscsvkeyinmasterappforetc
1条回答
网友
1楼 · 发布于 2024-06-02 06:50:09

这将是最容易利用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文件,其中包含:

^{pr2}$

相关问题 更多 >