🔖
Pythonのdict.get()と[ ]の違いと使い分け
はじめに
Pythonで辞書(dict
)から値を取り出すとき、
次の2つの書き方があります。
value = my_dict['key']
value = my_dict.get('key')
最初は、どちらも同じではないかと思うかもしれません。
しかし実際は、エラーの起き方や挙動に違いがあります。
本記事では、dict.get()
と []
の違いと使い分けについて解説します。
[]
(キーアクセス)の特徴
value = my_dict['key']
✅ 指定したキーが辞書に存在すれば値を返します
✅ 存在しないキーを指定すると、KeyError
というエラーが発生します
例:
my_dict = {'apple': 100} # key: 果物名, value: 値段
print(my_dict['apple']) # → 100
print(my_dict['banana']) # → KeyError発生
エラーでプログラムが止まります。
get()
の特徴
value = my_dict.get('key')
✅ 指定したキーが存在すれば値を返します
✅ 存在しない場合は、 None
を返します(エラーになりません)
例:
my_dict = {'apple': 100} # key: 果物名, value: 値段
print(my_dict.get('apple')) # → 100
print(my_dict.get('banana')) # → None
エラーは発生しません。代わりに None
が返ります。
さらに、第2引数にデフォルト値を指定することもできます。
price = my_dict.get('banana', 0)
print(price) # → 0
✅ キーがないとき、「0」を返すようにできます。
使い分け
場面によって使い分けることがポイントです。
書き方 | 特徴 | 向いている場面 |
---|---|---|
my_dict['key'] |
存在しないと KeyError
|
キーが必ず存在する前提の場合 |
my_dict.get() |
存在しないと None or デフォルト値 |
キーが存在しない可能性がある場合 |
get()
が役立つ場面
具体例:例えば、辞書から商品の在庫を確認するプログラムがあったとします。
stock = {'apple': 10, 'banana': 5} # key: 果物名, value: 在庫数
item = 'orange'
quantity = stock.get(item, 0)
print(f"{item} の在庫は {quantity} 個です")
出力:
orange の在庫は 0 個です
✅ get()
を使うことで「キーがないとき0を返す」処理が書けます。
✅ []
で書くと KeyError
で止まってしまいます。
おわりに
辞書(dict)から値を取り出すとき、
「キーがない場合どうするか」 を意識することで、
エラーを回避し、意図した挙動を実現できます。
普段のコーディングでは、「キーが存在しない可能性がある」場合は get()
を使う習慣をつけておくと安心です。
本記事が参考になれば幸いです。
Discussion