2014-07-15 4 views
5

Ich suche nach einer Möglichkeit, ein Python-Wörterbuch in Spalten zu schreiben (Schlüssel in der ersten Spalte und Werte in der zweiten). Diese link zeigt, wie man eine Liste in eine Spalte schreibt, aber ich frage mich, ob es eine Möglichkeit gibt, dies zu tun, ohne mein Wörterbuch in zwei gezippte Listen zu konvertieren.Python-Wörterbuch in CSV-Spalten schreiben: Schlüssel zur ersten Spalte, Werte zu Sekunde

myDict = {1:'a', 2:'b', 3:'c'} 

keyList = myDict.keys() 
valueList = myDict.values() 

rows = zip(keyList, valueList) 

with open('test.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for row in rows: 
     writer.writerow(row) 

gewünschtes Ergebnis:

1;a 
2;b 
3;c 

Antwort

5

könnten Sie einfach tun:

with open('test.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for row in myDict.iteritems(): 
     writer.writerow(row) 
2

Eine etwas kürzere Version zu tun ist:

rows = myDict.iteritems() 

(Oder .items() für Python 3.)

Um den ; Separator zu erhalten, Pass delimiter zu csv.reader oder csv.writer. In diesem Fall:

writer = csv.writer(f, delimiter=';') 
+0

Dies ergäbe '1; 2; 3 \ na; b; c ', nicht die gewünschte Ausgabe. – zsquare

+0

DANKE! Ich habe ewig gebraucht, um eine passende Antwort zu finden. Du hast mir geholfen, meine Lösung zu finden: 'mit open ('manifesttest2.csv', 'wb') als f: \t \t writer = csv.writer (f, delimiter = ', ') \t \t writer.writerow (amazonData) ' –

+0

@MichaelRomrell CSVs Lese- und Schreibobjekte sollten',' als Trennzeichen verwenden (CSV steht für durch Komma getrennte Werte). Funktioniert es, ohne den Parameter zu übergeben? – Anorov

Verwandte Themen