1. ホーム
  2. python

2つの辞書のマージと合計

2023-09-07 06:52:04

質問

以下のような辞書がありますが、必ずしも明確な要素を持たない別の辞書に追加して、その結果をマージしたいと思います。このための組み込み関数はありますか、それとも自分で作る必要がありますか?

{
  '6d6e7bf221ae24e07ab90bba4452267b05db7824cd3fd1ea94b2c9a8': 6,
  '7c4a462a6ed4a3070b6d78d97c90ac230330603d24a58cafa79caf42': 7,
  '9c37bdc9f4750dd7ee2b558d6c06400c921f4d74aabd02ed5b4ddb38': 9,
  'd3abb28d5776aef6b728920b5d7ff86fa3a71521a06538d2ad59375a': 15,
  '2ca9e1f9cbcd76a5ce1772f9b59995fd32cbcffa8a3b01b5c9c8afc2': 11
}

辞書の要素数も不明です。

マージが2つの同じキーを考慮する場合、これらのキーの値は上書きされるのではなく、合計される必要があります。

どのように解決するのですか?

具体的にどのようにマージしたいのかが書かれていませんので、お好きな方法をお選びください。

x = {'both1': 1, 'both2': 2, 'only_x': 100}
y = {'both1': 10, 'both2': 20, 'only_y': 200}

print {k: x.get(k, 0) + y.get(k, 0) for k in set(x)}
print {k: x.get(k, 0) + y.get(k, 0) for k in set(x) & set(y)}
print {k: x.get(k, 0) + y.get(k, 0) for k in set(x) | set(y)}

結果

{'both2': 22, 'only_x': 100, 'both1': 11}
{'both2': 22, 'both1': 11}
{'only_y': 200, 'both2': 22, 'both1': 11, 'only_x': 100}