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