首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以特定格式将数据从字典写入csv文件

以特定格式将数据从字典写入csv文件
EN

Stack Overflow用户
提问于 2018-02-03 03:21:12
回答 2查看 40关注 0票数 0

我有本字典:

代码语言:javascript
复制
dic = {"HM1": ['Jackson','Matt','M','Football'], "SM2":['Scott','Max','M']}

我需要一个代码,“写”这些字典数据到csv文件的形式:

代码语言:javascript
复制
HM1,Jackson,Matt,M,Football
SM2,Scott,Max,M

我有一个不起作用的代码:

代码语言:javascript
复制
with open("file.csv", "w", newline="") as new_data:
    fieldnames = ['ID','Firstname','Lastname','Gender','Sports']
    data_writer = csv.DictWriter(new_data, fieldnames=fieldnames)

    for k in dic.keys():
        r = dic[k]
        data_writer.writerow({'ID':r[0],'Firstname':r[1],'Lastname':r[2],'Gender':r[3],'Sports':r[4]})
EN

回答 2

Stack Overflow用户

发布于 2018-02-03 03:31:55

首先,确保你的列表具有相同的长度,

如果是这样,您必须将其转换为数据帧,并使用pandas模块将数据帧转换为csv文件: inatall使用

代码语言:javascript
复制
pip install pandas

然后像这样导入它:

代码语言:javascript
复制
import pandas as pd



df = pd.DataFrame({"HM1": ['Jackson','Matt','M','Football'], "SM2":['Scott','Max','M', '']})
df = df.T 
df.to_csv('path_to_file.csv', header=False)

UPDATE:如果您的数据列表没有相同的长度,您可以像这样继续:

代码语言:javascript
复制
data_dict= {"HM1": ['Jackson','Matt','M','Football'], "SM2":['Scott','Max','M']}
df = pd.DataFrame(data=[x for x in data_dict.values()], index= data_dict.keys())
df.fillna('', inplace=True)
df.to_csv('path_to_file.csv', header=False)
票数 1
EN

Stack Overflow用户

发布于 2018-02-03 04:08:35

已更正代码:

代码语言:javascript
复制
with open("file.csv", "w", newline="") as new_data:
    fieldnames = ['ID','Firstname','Lastname','Gender','Sports']
    data_writer = csv.DictWriter(new_data, fieldnames=fieldnames)

    data_writer.writeheader()
    for k,r in dic.items():        
        data_writer.writerow({fieldnames[i]: k if i == 0 else r[i-1] for i in range(len(r)+1)}) 

原始代码中的一些问题:

1.)您从未从字典键中写入"ID“列。

2.)您可以轻松地迭代dic.items(),它同时返回键和项,而不是使用r = dic[k]。3.)您的r返回一个IndexError,因为您的第二行缺少一个值,因此r[4]将引发一个列表长度仅为3的错误。这可以通过列表理解来轻松地动态处理。

无论如何,输出

足球ID,名字,姓氏,性别,体育HM1,杰克逊,马特,M,足球SM2,斯科特,最大,M,

我建议你以某种方式处理列表中丢失的数据(比如'N/A'),而不是仅仅让列表的长度不均匀。另一个答案的pandas解决方案很棒,但如果您对该模块或安装外部模块感到不舒服,则此解决方案仅适用于csv

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48589525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档