
Pythonで辞書(dictionary)を扱うときによく使われるメソッドに .get()
があります。
一見すると dict["key"]
と似たようなことをしているように見えますが、get()
を使うことでエラーを防いだり、柔軟な処理ができるという利点があります。
この記事では、get()
メソッドの基本的な使い方から、実際の活用シーンまで、初心者にもわかりやすく丁寧に解説します。
get()
とは?
Python の辞書型(dict)に備わっているメソッドで、指定したキーの値を取得するために使います。
通常、辞書から値を取り出すには以下のように書きます:
1 2 3 |
user = {"id": 1, "name": "Taro"} print(user["name"]) # → "Taro" |
しかし、もし "password"
というキーが存在しなかった場合、次のようにエラーになります。
1 2 |
print(user["password"]) # → KeyError! |
ここで .get()
を使えば、キーが存在しない場合でも安全に処理を続けることができます。
1 2 |
print(user.get("password")) # → None(エラーにならない) |
基本構文と特徴
1 2 |
辞書.get(キー, デフォルト値) |
- キー:取得したい辞書のキー
- デフォルト値(省略可):キーが存在しないときに返される値。指定しない場合は
None
が返る
例
1 2 3 4 5 6 |
user = {"id": 1, "name": "Taro"} print(user.get("name")) # → "Taro" print(user.get("password")) # → None print(user.get("password", "")) # → 空文字("")を返す |
具体例①:ユーザー情報からパスワードを安全に取得する
CSVデータなどを辞書で読み込んだ場合、存在しないカラムがあることもよくあります。
そんなとき get()
を使えば、存在しないカラム名を指定してもエラーを防げます。
1 2 3 4 5 6 |
user = {"USER_ID": "abc123", "NAME": "山田太郎"} password = user.get("PASSWORD", "未登録") print(f"パスワード:{password}") # → パスワード:未登録 |
このようにしておけば、"PASSWORD" というキーがあればその値を使い、なければ「未登録」として扱うことができます。
具体例②:CSVファイルの読み取り時に使う
CSVファイルを1行ずつ辞書として処理する場合(例:csv.DictReader
使用)、get()
は特に重宝されます。
1 2 3 4 5 6 7 8 9 |
import csv with open("users.csv", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: user_id = row.get("USER_ID") password = row.get("PASSWORD", "なし") print(f"{user_id} のパスワードは {password}") |
上記のように書けば、仮に「PASSWORD」列が存在しない行があっても KeyError
にならず、安全に処理を続けられます。
具体例③:辞書からオプション的な値を取得するとき
設定ファイルやオプション情報など、「必須ではない」キーの値を取得したい場面にも便利です。
1 2 3 4 5 |
config = {"theme": "dark", "lang": "ja"} font_size = config.get("font_size", 12) # 未設定なら12 print(f"フォントサイズ:{font_size}") |
get()
と []
の違いを整理
方法 | 存在しないキーの場合 | デフォルト値の指定 | 主な用途 |
---|---|---|---|
dict["key"] |
KeyErrorが出る | できない | 確実に存在するキーの取得 |
dict.get() |
None(または指定値) | できる | 存在しないかもしれないキーに使う |
まとめ
.get()
は辞書から値を安全に取得するためのメソッド- キーが存在しない場合でも
None
や指定したデフォルト値を返してくれる "PASSWORD"
のようなカラムを取得するときに便利- CSVデータ処理やオプション設定の読み取りなど、実務でよく使う
辞書のキーが必ず存在するとは限らない場面では、get()
を活用しましょう!