Der Schlüssel hier ist
data = {
'col1': [1, 2, 3],
'col2': [4, 5, 6],
'col3' : [7, 8, 9]
}
in eine Liste von Zeilen zu verwandeln:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Wir wissen, dass dieser Ausdruck eine Liste der Spalten erhalten wird:
header = ['col1', 'col2', 'col3']
[data[h] for h in header] # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Wenn wir sie zippen zusammen, dann bekommen wir, was wir wollen:
zip(*(data[h] for h in header)) # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Damit können wir die Daten in die CSV-Datei schreiben. Dass sie alle zusammen:
import csv
data = {
'col1': [1, 2, 3],
'col2': [4, 5, 6],
'col3' : [7, 8, 9]
}
header = ['col1', 'col2', 'col3']
with open('dict_to_csv_in_order.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(zip(*(data[h] for h in header)))
Verwenden einen 'ordereddict', eine 'Taste dict's ist von Natur aus nicht in der gleichen Reihenfolge angeordnet, daß die Tasten ausgebildet sind, oder die Schlüssel sortiert werden und über die Tasten iterieren, um den Inhalt in der gewünschten Reihenfolge zu erhalten – EdChum