2017-04-22 6 views
-3

Ich habe eine Liste von Wörterbüchern, die ich in einen csv exportieren möchte. Das Format der Liste lautet wie folgt:Wie konvertiert man eine Liste von Wörterbüchern in ein csv?

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

Ich möchte, dass die Schlüssel die Spaltennamen und Werte wie jede Zeile übernehmen. Kann mir jemand helfen, wie es geht?

Erwarteter Ausgang:

Country Industry Score 
US   Telecom  105 
US   Banking  145 
+3

Der [Standard csv docs] (https://docs.python.org/3/library/csv.html#csv.DictWriter) ein Beispiel für diesen genauen Fall. Du musst etwas recherchieren. – tdelaney

Antwort

2

Sie die CSV Bibliothek

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) 

Oder kompakter nutzen könnten.

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) 

Plus: Unter der Annahme, dass jedes Element in der Liste enthält alle entsprechenden Elemente wir den folgenden Code verwenden, um den Header zu erhalten. Dank @martineau

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

'writer.writerows ((dct für dct in dict_list))' – martineau

+0

Sie können die Liste direkt verwenden, weil sie iterierbar ist: 'writer.writerows (dict_list)' – eyllanesc

+0

Ein noch besserer Punkt. '' '' – martineau

0

Sie pandas verwenden können:

>>> 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) 

Hier sep aregument als Komma angegeben haben, können Sie nach Ihrem Wunsch verwenden.

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

Sie könnten Ihre Frage verbessern, indem Sie eine kurze Erklärung geben – eyllanesc

Verwandte Themen