Python: Writing Nested Dictionary to CSV
This looks like a job for DictWriter
:
import csv
import itertools
import sys
fields = [ 'org', '2015', '2014', '2013' ]
dw = { 'orgname1': { '2015' : 2, '2014' : 1, '2013' : 1 },
'orgname2': { '2015' : 1, '2014' : 2, '2013' : 3 },
'orgname3': { '2015' : 1, '2014' : 3, '2013' : 1 }
}
w = csv.DictWriter( sys.stdout, fields )
for key,val in sorted(dw.items()):
row = {'org': key}
row.update(val)
w.writerow(row)
Alternative implementation using DictWriter and with headers
import csv
import itertools
fields = [ 'org', '2015', '2014', '2013' ]
dw = { 'orgname1': { '2015' : 2, '2014' : 1, '2013' : 1 },
'orgname2': { '2015' : 1, '2014' : 2, '2013' : 3 },
'orgname3': { '2015' : 1, '2014' : 3, '2013' : 1 }
}
with open("test_output.csv", "wb") as f:
w = csv.DictWriter(f, fields)
w.writeheader()
for k in dw:
w.writerow({field: dw[k].get(field) or k for field in fields})
Output:
org,2015,2014,2013
orgname1,2,1,1
orgname3,1,3,1
orgname2,1,2,3