1. ホーム
  2. python

[解決済み] 同じキーや異なるキーを持つ複数のディクショナをマージするには?

2022-10-23 19:22:03

質問

このようなdicts/key-valueのペアが複数あります。

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

結果は新しいdictにしたい(可能であれば最も効率的な方法で)。

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

実は、結果dが欲しい。

d = {key1: (x1.x1attrib, x2.x2attrib), key2: (y1.y1attrib, y2.y2attrib)}  

もし誰かが最初の結果を得る方法を教えてくれたら、残りを理解することができます。

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

すべてのキーがすべてのディクテに常に存在すると仮定します。

ds = [d1, d2]
d = {}
for k in d1.iterkeys():
    d[k] = tuple(d[k] for d in ds)

注意:Python 3.xでは、以下のコードを使用してください。

ds = [d1, d2]
d = {}
for k in d1.keys():
  d[k] = tuple(d[k] for d in ds)

で、dicにnumpyの配列が含まれている場合。

ds = [d1, d2]
d = {}
for k in d1.keys():
  d[k] = np.concatenate(list(d[k] for d in ds))