2017-03-25 3 views
0
keys = ['key1', 'key2', 'key3', 'key4'] 
list1 = ['a1', 'b3', 'c4', 'd2', 'h0', 'k1', 'p2', 'o3'] 
list2 = ['1', '2', '25', '23', '4', '5', '6', '210', '8', '02', '92', '320'] 


abc = dict(zip(keys[:4], [list1,list2])) 

with open('myfilecsvs.csv', 'wb') as f: 
    [f.write('{0},{1}\n'.format(key, value)) for key, value in abc.items()] 

Ich bekomme alle Schlüssel in 1. Spalte mit diesem und Werte in anderen Spalte jeweils.Wie Schlüssel des Wörterbuchs in der ersten Reihe von csv eher als erste Spalte setzen?

Was ich versuche zu erreichen, ist alle Schlüssel in der ersten Zeile i-e jeden Schlüssel in der spezifischen Spalte der ersten Zeile und dann ihre Werte unten. So etwas wie transponieren

ich willbe viel dankbar für Ihre helfen auf dieser

+0

Bitte eine erwartete Ausgabe für den Probeneingang Ihnen zur Verfügung gestellten –

Antwort

0

Sie join und zip_longest dies zu tun, verwenden können.

",".join(abc.keys()) kehren erste Reihe (die Schlüssel) wie key1,key2 und dann zip_longest verwenden (Python2.x izip_longest verwenden) zu aggregieren elements.And die gleiche Art und Weise und ,\n auf den String append zu verwenden.

zip_longest

einen Iterator Stellen, die Elemente von jedem der Iterables Aggregate. Wenn die Iterables ungleich lang sind, werden fehlende Werte mit fillvalue ausgefüllt.

from itertools import zip_longest 

with open('myfilecsvs.csv', 'w') as f: 
    f.write("\n".join([",".join(abc.keys()),*(",".join(i) for i in zip_longest(*abc.values(),fillvalue=''))])) 

Ausgang:

key1,key2 
a1,1 
b3,2 
... 
,02 
,92 
,320 
Verwandte Themen