Pythonで辞書を扱う際、存在しないキーを指定して値を取り出そうとするとKeyErrorが発生し、プログラムが停止してしまいます。これを防ぐためのエレガントな方法が、辞書の**get()メソッド**です。
この記事では、get()メソッドの基本的な使い方と、角括弧[]を使ったアクセスとの違いについて解説します。
目次
エラーを引き起こす角括弧[]でのアクセス
辞書から値を取得する最も基本的な方法は、角括弧[]を使うことです。キーが存在する場合、この方法は問題なく機能します。
# 在庫数を管理する辞書
inventory = {"widgets": 50, "gadgets": 20}
# 存在するキーにアクセス
print(f"ウィジェットの在庫: {inventory['widgets']}")
しかし、辞書に存在しないキーを指定すると、即座にKeyErrorが発生します。
# 存在しないキー 'gizmos' にアクセスしようとする
# print(inventory['gizmos']) # この行はKeyErrorを引き起こします
プログラムを堅牢にするためには、このような予期せぬエラーを避ける仕組みが必要です。
get()メソッドで安全に値を取得する
get()メソッドは、このKeyErrorの問題を解決するために存在します。get()は2つの引数を取ります。
dictionary.get(キー, デフォルト値)
- 第1引数: 取得したい値に対応するキー。
- 第2引数: もしキーが存在しなかった場合に返すデフォルト値。
inventory = {"widgets": 50, "gadgets": 20}
# 存在するキー "gadgets" を取得
num_gadgets = inventory.get("gadgets", 0)
print(f"ガジェットの在庫: {num_gadgets}") # 出力: 20
# 存在しないキー "gizmos" を取得
num_gizmos = inventory.get("gizmos", 0)
print(f"ギズモの在庫: {num_gizmos}") # 出力: 0
inventory.get("gizmos", 0)の呼び出しでは、"gizmos"というキーが存在しないため、KeyErrorを発生させる代わりに、指定されたデフォルト値である0が返されます。これにより、プログラムは停止することなく処理を続けることができます。
デフォルト値の省略
get()メソッドの第2引数(デフォルト値)は省略可能です。もし省略した場合、キーが存在しないときには**None**という特別な値が返されます。
Python
inventory = {"widgets": 50, "gadgets": 20}
result = inventory.get("gizmos")
print(result) # 出力: None
まとめ
- 角括弧
[]によるアクセスは、キーが必ず存在すると確信している場合に適しています。存在しないとKeyErrorが発生します。 get()メソッドは、キーが存在するかわからない場合に適しています。キーが存在しなくてもエラーにならず、指定したデフォルト値(またはNone)を返します。
get()メソッドを使いこなすことで、より安全で柔軟な辞書の操作が可能になります。
