【Python】csv.DictReaderって何?わかりやすく解説!

PythonでCSVファイルを扱うときに便利なのが、標準ライブラリの csv モジュールです。

その中でも特によく使われるのが csv.DictReader

これは、CSVの1行1行を「辞書」として扱えるようにする機能です。

この記事では、csv.DictReader の基本的な使い方から、実際の活用シーンまで、初心者にもわかりやすく解説します。

DictReaderとは?

通常、CSVファイルを csv.reader で読み込むと、各行はリスト(list)として扱われます。

それに対して csv.DictReader は、各行を「列名をキーとした辞書(dict)」として扱えるようにするクラスです。

つまり、CSVのヘッダー行(1行目)をもとに、各行の値にキー名を自動で割り当ててくれます。

具体例①:基本的な使い方

次のようなCSVファイル users.csv があるとします。

このCSVを DictReader で読み込むと、各行が下記のような辞書になります:

出力:

このように、リストではなく辞書として読み取れるため、row["USER_ID"] のようにカラム名で直接アクセスできるのが大きな利点です。

具体例②:値を取り出して整形表示

辞書として扱えるので、各カラムに名前でアクセスできます。

各ユーザーの情報を、簡単に整った形で出力できます。

具体例③:存在しないカラムへの安全なアクセス

「PASSWORD」カラムが存在しない行があるかもしれないときも、get() を使えば安全です。

これで KeyError を防ぎながら、デフォルト値を設定できます。

ヘッダー行がないCSVを扱いたい場合

DictReader は1行目を自動的にヘッダーとして扱います。

ただ、もしヘッダーがないCSVを扱いたい場合は fieldnames を指定することで解決できます。

このようにすれば、1行目をデータとして扱いながらも、辞書として処理可能です。

文字コードや改行コードにも注意

CSVを扱うときは、エンコーディング(utf-8shift_jis)や改行コード(Windows の場合 newline='' 指定)に注意が必要です。

このように書いておけば、OS間の互換性が高くなります。

DictReaderreader の違い

csv.reader csv.DictReader
出力形式 リスト(list) 辞書(dict)
カラム名でのアクセス できない(添字のみ) できる("NAME" などでアクセス)
ヘッダーの扱い 自分で処理する必要あり 自動で1行目をヘッダーとして扱う

まとめ

  • csv.DictReader は、CSVファイルを辞書として読み取れる便利なクラス
  • カラム名で直接アクセスでき、コードが読みやすくなる
  • row.get("カラム名") を使えば安全に値を取り出せる
  • ヘッダーのないCSVにも fieldnames で対応可能
  • CSV処理ではほぼ定番なので、ぜひ覚えておきたい機能

辞書として使えることで、データの扱いやすさが格段に上がるため、実務やデータ分析でも頻繁に登場するメソッドです。

おすすめの記事