Pythonの辞書(dict)に格納されたデータを利用するには、対応する「キー」を指定して「値」を取り出す必要があります。
この操作には主に2つの方法があります。一つは角括弧 [] を使う基本的な方法、もう一つは .get() メソッドを使う安全な方法です。
この記事では、これら2つの方法の違いと、エラー(KeyError)を回避するための適切な使い分けについて解説します。
1. 角括弧 [] による値の参照
辞書変数に続けて ["キー名"] を記述することで、そのキーに対応する値を取得できます。これは最も一般的で直感的な方法です。
構文:
値 = 辞書変数["キー"]
使用例: 商品情報を管理する辞書を例にします。
# 商品データの辞書
product_data = {
"id": "P-1024",
"name": "Wireless Mouse",
"price": 2980
}
# キーを指定して値を取得
product_name = product_data["name"]
product_price = product_data["price"]
print(f"商品名: {product_name}")
print(f"価格: {product_price}")
実行結果:
商品名: Wireless Mouse
価格: 2980
存在しないキーを指定した場合 (KeyError)
この方法の注意点は、辞書の中に存在しないキーを指定すると、プログラムがエラー(KeyError)で停止することです。
# 存在しないキー "color" を参照しようとする
# color = product_data["color"]
# KeyError: 'color'
キーが確実に存在するとわかっている場合以外は、次に紹介する .get() メソッドの使用を検討するか、try-except ブロックで例外処理を行う必要があります。
2. .get() メソッドによる値の参照
.get() メソッドを使用すると、キーが存在しない場合でもエラーにならず、安全に値を取得できます。
構文:
値 = 辞書変数.get("キー", デフォルト値)
キーが存在する場合
[] を使った場合と同じく、対応する値が返されます。
# キー "id" は存在するので、その値が返る
product_id = product_data.get("id")
print(f"商品ID: {product_id}")
実行結果:
商品ID: P-1024
キーが存在しない場合(デフォルト動作)
ここが最大の違いです。キーが存在しない場合、エラーにはならず、代わりに None(値がないことを示すオブジェクト)が返されます。
# 存在しないキー "stock" を参照
stock_count = product_data.get("stock")
print(f"在庫数: {stock_count}")
実行結果:
在庫数: None
キーが存在しない場合(デフォルト値の指定)
.get() メソッドの第2引数に値を指定すると、キーが見つからなかった場合に返す「デフォルト値」を設定できます。
# "category" キーがない場合、"Uncategorized" を返す
category = product_data.get("category", "Uncategorized")
print(f"カテゴリ: {category}")
# "price" キーはあるので、そのまま 2980 が返る(デフォルト値 0 は無視される)
price_check = product_data.get("price", 0)
print(f"価格チェック: {price_check}")
実行結果:
カテゴリ: Uncategorized
価格チェック: 2980
まとめ
辞書から値を取得する際は、状況に応じて使い分けます。
辞書["キー"]: キーが必ず存在すると確信できる場合に使用します。存在しないとKeyErrorになります。辞書.get("キー"): キーが存在しない可能性がある場合に使用します。Noneが返されるため、エラーによる停止を防げます。辞書.get("キー", デフォルト値): キーが存在しない場合に、特定の値(0や空文字など)を代わりに使用したい場合に便利です。
