2017-04-22 113 views
-3

我有一个词典列表,我想要导出到csv。列表的格式如下:如何将字典列表转换为csv?

dict_list=[{'Country':'US', 'Industry':'Telecom', 'Score':105}, 
      {'Country':'US', 'Industry':'Banking', 'Score':145}] 

我希望键取得列名和值作为每一行。有人可以帮助我如何做到这一点。

预期输出:

Country Industry Score 
US   Telecom  105 
US   Banking  145 
+3

[标准CSV文档](https://docs.python.org/3/library/csv.html#csv.DictWriter)具有此确切情况的例子。你必须做一些研究。 – tdelaney

回答

2

您可以使用CSV库

import csv 

dict_list=[{'Country':'US', 'Industry':'Telecom', 'Score':105}, 
      {'Country':'US', 'Industry':'Banking', 'Score':145}] 



with open('names.csv', 'w') as csvfile: 
    fieldnames = ['Country', 'Industry', 'Score'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter='\t') 

    writer.writeheader() 
    for d in dict_list: 
     writer.writerow(d) 

或者更紧凑。

with open('names.csv', 'w') as csvfile: 
    fieldnames = ['Country', 'Industry', 'Score'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter='\t') 

    writer.writeheader() 
    writer.writerows(dict_list) 

加:假定列表中的每个元素都包含所有我们可以使用下面的代码来获得报头中的相应的元件。由于@martineau

fieldnames = dict_list[0].keys() 
+0

'writer.writerows((dct for dct in dict_list))' – martineau

+0

你可以直接使用这个列表,因为它是一个可迭代的:'writer.writerows(dict_list)' – eyllanesc

+0

更好的一点。 ';-)' – martineau

0

您可以使用pandas

>>> import pandas as pd 
>>> df = pd.DataFrame(dict_list) 
>>> df 
    Country Industry Score 
0  US Telecom 105 
1  US Banking 145 
>>> pd.DataFrame.to_csv(df, 'test.csv', sep=',', index=False) 

下面是给sep aregument为逗号,你可以按你的意愿使用。

Beagle:~ kumarshubham$ cat test.csv 
Country,Industry,Score 
US,Telecom,105 
US,Banking,145 
0
import pandas as pd 
dict_list=[{'Country':'US', 'Industry':'Telecom', 'Score':105},{'Country':'US', 'Industry':'Banking', 'Score':145}] 
df= pd.DataFrame(dict_list) 
df.set_index('Country').to_csv('test.csv') 
+1

你可以通过简单的解释来改善你的问题 – eyllanesc