ディクショナリの各キーに複数の値を割り当てる

これ色々使えそうなのでメモしとこ

# ディクショナリにListを入れて追加している
# valueの重複は許している
d1 = {}
d1.setdefault(key,[]).append(value)

# ディクショナリにディクショナリを入れて追加している
# valueの重複は許さない
# getした後なら分かるのだけれど
# 少し違和感なのがsetの結果から更に追加してる所
# set関数でも結果がリターンされるからこういう書き方もできるんだな
d2 = {}
d2.setdefault(key,{})[value] = 1


# ディクショナリに集合を入れて追加している
# valueの重複は許さない
d3 = {}
d3.setdefault(key, set()).add(value)

クックブックから引用

集合型ってディクショナリ型と初期化が同じで紛らわしいな
でもぜんぜん使い方違うし動きも違う