一致するキーから値を収集して辞書をマージする方法は? 質問する

一致するキーから値を収集して辞書をマージする方法は? 質問する

次のような複数の辞書 (またはキーと値のペアのシーケンス) があります。

d1 = {key1: x1, key2: y1}
d2 = {key1: x2, key2: y2}

このような結果を新しい辞書として効率的に取得するにはどうすればよいでしょうか?

d = {key1: (x1, x2), key2: (y1, y2)}

参照:Python で重複キーを持つ辞書を作成するにはどうすればよいでしょうか?

ベストアンサー1

以下は、キーが一部の辞書にのみ存在する場合を含め、任意の数の辞書を処理する一般的なソリューションです。

from collections import defaultdict

d1 = {1: 2, 3: 4}
d2 = {1: 6, 3: 7}

dd = defaultdict(list)

for d in (d1, d2): # you can list as many input dicts as you want here
    for key, value in d.items():
        dd[key].append(value)
    
print(dd) # result: defaultdict(<type 'list'>, {1: [2, 6], 3: [4, 7]})

おすすめ記事