2014-07-15 13 views
5

Poszukuję sposobu napisania słownika Pythona do kolumn (klucze w pierwszej kolumnie i wartości w drugiej). Ten link pokazuje, jak napisać listę do kolumny, ale zastanawiam się, czy istnieje sposób, aby to zrobić bez konwersji mojego słownika na dwie spakowane listy.Zapisywanie słownika Pythona w kolumnach CSV: klucze do pierwszej kolumny, wartości do drugiego

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) 

pożądany rezultat:

1;a 
2;b 
3;c 

Odpowiedz

5

może po prostu wykonać:

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

Nieco krótsza wersja jest do zrobienia:

rows = myDict.iteritems() 

(Albo .items() dla Pythona 3.)

Aby uzyskać ; separator, zdać delimiter na csv.reader lub csv.writer. W tym przypadku:

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

przyniesie to '1; 2; 3 \ na; b; C', a nie pożądany wynik. – zsquare

+0

DZIĘKUJEMY! Zajęło mi na zawsze znalezienie odpowiedniej odpowiedzi, pomogłeś mi znaleźć rozwiązanie: 'with open ('manifesttest2.csv'," wb ") jako f: \t \t writer = csv.writer (f, delimiter = ', ') \t \t writer.writerow (amazonData) ' –

+0

@MichaelRomrell Obiekty czytnika i programisty CSV powinny domyślnie używać', 'jako ogranicznika (CSV oznacza wartości rozdzielone przecinkami). Czy działa bez podania parametru? – Anorov

Powiązane problemy