2011年8月22日月曜日

pythonで辞書のサブセットをcsvに変換

辞書のキーのうち必要なものだけをcsvで書き出します。
id, height, width, weightの辞書リストから、id, height, widthだけのcsvをつくっています。

import csv
outpath = '/path/to/csv'

paramnames = ['id','height','width']
rows = [{'id':0,'height':10,'width':5,'weight':3},{'id':1,'height':3,'width':7,'weight':9}]
header = dict([(val,val)for val in paramnames])

with open(outpath, mode='w') as f:
    rows.insert(0,header)
    writer = csv.DictWriter(f, paramnames, extrasaction='ignore')
    writer.writerows(rows)


paramnamesにid, height, widthを指定しているので、
id height width
0 10 5
1 3 7
というcsvができます。weightは指定していないので書き出されません。

辞書のサブセットをcsv化する方法は、
csv.DictWriterでextrasaction='ignore'にすると全パラメータを使わなくてもエラーをはきません。(ignoreしてますからね・・・)


DictWriterでヘッダを追加する方法はこちらを参考にしました。