Python Dict型の便利な使い方

Python には dict というkey: valueの組を保持する基本型があります。

これを使っていると、コード量が増え面倒だと思う場面が多々あります。 Pythonにはコーディングを楽にする仕組みがあるので紹介します。

get()メソッド

getはdict型のメソッドです。 dictを使っていると、キーの存在確認をするコードを書くことがあります。

if key in dic:
    return dic[key]
else:
    return None 

get()メソッドを使うと、キーの存在確認をするif文を省くことができます。

return dic.get(key, None)

この文の意味は、「getはkeyに対応する要素を取得する。keyが存在しなければNoneを返す。」です。

defaultdict型

defaultdicrtはdict型のサブクラスで、Pythonに標準で用意されています。 デフォルトのvalue値を初期化する関数を引数に追加することができ、valueの初期値の代入するコードを書かなくて良くなります。

例えば、dictのvalueにlistを保持するデータ構造を扱いたいとします。 これを普通にdict型で書くと

dic = {}
dic['key'] = []
dic['key'].append(123)

という書き方になります。 defaultdictを使うと以下になり、valueの初期値代入を省くことができます。

from collections import defaultdict
dict = defaultdict(list)
dict['key'].append(123)

ちなみに、list関数はlist型を生成する関数です。初期値は[]が設定されます。

内包表現

{}のない方表現を使うと、簡単に辞書を作成することができます。

dic = {i:func(i) for i in range(i)} 

参考

Not using get() to return a default value from a dict — Python Anti-Patterns documentation

8.3. collections --- コンテナデータ型 — Python 3.6.12 ドキュメント