Python setdefaultメソッド 要素がない場合のみ追加
setdefaultメソッド
辞書型(dict)に要素(key)が存在しない時のみ要素を追加する。
存在する時は何もせず、エラーを出さない。
dict.setdefault(要素[, 値])
最初にまとめを書いておきます。
- dict[要素] = 値 ・・・要素があれば上書き、なければ要素を追加
- dict[要素] += 値 ・・・要素があれば値をプラス、なければエラー
- dict.setdefault(要素, 値)・・・要素があればスルー、なければ要素を追加
例として、
要素(key)が商品名、値(value)が在庫数のデータを持つ辞書型dictがあるとし、
在庫を増やしたり減らしたり、新商品が入ってきたらdictに要素を追加するモジュール。
'peach'という要素がないのでエラーが発生してしまう。
>>> dict = {'apple' : 5, 'orange' : 1, 'grape' : 10} # 在庫 >>> dict['apple'] += 1 # 'apple'が1つ増えた >>> dict {'apple': 6, 'orange': 1, 'grape': 10} >>> dict['peach'] += 1 # 'peach'が1つ増えた KeyError: 'peach' # 'peach'という要素がないのでエラー
エラーを出さないようにするにはif文にしよう!
>>> dict = {'apple' : 5, 'orange' : 1, 'grape' : 10} # 在庫 >>> if 'peach' in dict: duct['peach'] += 1 # dictに'peach'がある場合は+1 else: dict['peach'] = 1 # dictに'peach'がない場合は新商品として値を1
if分を使わずにもっと簡単な書き方がある。
setdefaultメソッドを使えばエラーが出ず記述できる。
>>> dict = {'apple' : 5, 'orange' : 1, 'grape' : 10} # 在庫 >>> dict.setdefault('apple', 0) # 在庫に'apple'がなければ新商品として値ゼロ >>> dict.['apple'] += 1 # 'apple'の在庫を+1 >>> dict {'apple': 6, 'orange': 1, 'grape': 10, 'peach': 1} >>> dict.setdefault('peach', 0) # 在庫に'peach'がなければ新商品として値ゼロ >>> dict['peach'] += 1 # 'peach'の在庫を+1
以上です。