如何将不等价列表作为值的字典转换为csv [英] How do i convert a dictionary with unequal list as value to csv

查看:97
本文介绍了如何将不等价列表作为值的字典转换为csv的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一本字典,其中的列表不等于这样的值

I have a dictionary with an unequal list as values like this

dict_data = {
    "Data 1": ["cool", "fantastic"],
    "Data 2": ["spam", "hello", "howdy", "foo"],
    "Data 3": ["good morning"],
}

我想要这样的输出

Data 1     Data 2  Data 3
cool       spam    good morning
fantastic  hello
           howdy
           foo

我已经尝试过在论坛上找到的

I have tried this which I found on this forum

def transpose(cols):
    return map(lambda *row: list(row), *cols)

with open('result.csv','w') as out_file:
    writer = csv.writer(out_file,dialect = 'excel')
    headers = dict_data.keys()
    items = transpose(dict_data.values())
    writer.writerow(headers)
    writer.writerows(items)

但是它只输出第一行

Data 1     Data 2  Data 3
cool       spam    good morning


推荐答案

这可能不是最佳答案,但我始终将要导出为csv的数据转换为pandas数据框。此解决方案也适用于不相等的列表值。

It might not be the best answer but I always convert the data I want to export as csv to a pandas dataframe. This solution also works well for unequal list values.

data1 = pd.DataFrame(dict_data["Data 1"])
data2 = pd.DataFrame(dict_data["Data 2"])

master = pd.concat([data1, data2], axis=1) 
master.to_csv("file_name", encoding='utf-8', index=False, header=None)

这篇关于如何将不等价列表作为值的字典转换为csv的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆