Python辞書の値を取得する方法:キー指定([])とget()メソッドの使い分け

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や空文字など)を代わりに使用したい場合に便利です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次