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()
メソッドを使いこなすことで、より安全で柔軟な辞書の操作が可能になります。