[Python] getメソッドを使って辞書の値を取得する

Python-dictionary-get


Python3で、辞書の値を取得する時にget()メソッドを使うと、指定したキーが辞書に存在すれば値を取得し、キーが存在しない時は指定した値を返してくれるということを知ったので、使い方をメモしておく。


get()を使うメリット

Pythonでは、キーを使って辞書の値を参照する際に、指定したキーがないとKeyErrorというエラーが発生してしまう。

そこで、キーを使って辞書の値を参照する時は、inを使ってキーが辞書に存在しているかどうかを調べることがある。

inは、キーが存在していればTrue、存在していなければFalseを返すので、if文を使うなどしてキーが存在している時と存在していない時で処理を分けることできる。

しかし、get()メソッドを使うと、辞書から値を取得する時に、わざわざ辞書にキーが存在するかを調べる必要がなくなるので、簡潔なコードを書くことができる。


inを使ってキーが存在するか調べる

まずは、inを使ってキーの存在を調べる基本的な方法について見ておく。

下のプログラムは、果物名をキー、果物の個数を値とする辞書からユーザーが入力した果物の個数を返すもの。
キーが存在しない時は、果物が1個もないとして0を返す。

dic_fruits = {'apple':5, 'orange':3, 'banana':7}

key = input('キーを入力してください。')
if key in dic_fruits:
    num = dic_fruits[key]
else:
    num = 0
    
print('{}が{}コあります。'.format(key, num))

#appleを入力した時の結果
キーを入力してください。apple
appleが5コあります。

#melonを入力した時の結果
キーを入力してください。melon
melonが0コあります。

このように、ifinを使うことで、辞書にないキーを指定してもエラーになることなく、代わりの値を返すことができる。




get()の使い方

次は、get()メソッドを使って辞書の値を取得する方法についてみてみる。

get()の書式

辞書.get(キー, キーがなかった時の値)


get()を使って辞書の値を取得する

ifとinを使った上述のプログラムをget()を使って書くと下記のようになる。
dic_fruits = {'apple':5, 'orange':3, 'banana':7}

key = input('キーを入力してください。')
num = dic_fruits.get(key, 0)
    
print('{}が{}コあります。'.format(key, num))

#appleを入力した時の結果
キーを入力してください。apple
appleが5コあります。

#melonを入力した時の結果
キーを入力してください。melon
melonが0コあります。

get()を使うと、ifとinで記述していた部分を1行で書き変えることができる。

以上、get()メソッドで辞書の値を取得する方法について。



なお、get()は辞書のキーがない時に代わりの値を返すが、setdefault()を使うとキーがない時に指定の値を辞書に追加することができる。

setdefaultのメッソドの使い方については以下の記事で。
[Python] setdefaultを使って辞書の値を取得&追加する

今回はここまで

プログラミングは、1つのことを色々な方法でできることが難しいこと。だけど、そこが楽しいことでもある。


0 件のコメント :