どすえのブログ

ソフトウェア開発ブログ

Python辞書に存在しないキーでの代入

辞書に存在しないキーで操作するときのベストプラクティスをメモ。getを使う方法3が一番簡潔。 辞書で個数をカウントするようなケースを考える。

counters = {
    "A": 1,
    "B": 0,
}

新規のキーに対してカウントを増やすには、まずキーがあるかどうか調べ、なければキーをデフォルトのカウント数0で追加し、カウントを1つ増やす必要がある。

方法1

in句によってキーの存在確認を行う方法。

key = "C"

if key in counters:
    count = counters[key]
else:
    count = 0
counters[key] = count + 1

# {'A': 1, 'B': 0, 'C': 1}

方法2

try, exceptによってキーの存在確認を行う方法。

key = "C"

try:
    count = counters[key]
except KeyError:
    count = 0
counters[key] = count + 1

# {'A': 1, 'B': 0, 'C': 1}

方法3

getを使う方法。getの第二引数はキーが存在しなかった時に返すデフォルト値。

key = "C"

count = counters.get(key, 0)
counters[key] = count + 1

# {'A': 1, 'B': 0, 'C': 1}

参考