如何使用相同的鍵合并多個dicts?我有多個dicts /鍵值對,如下所示: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)}如果有人告訴我如何獲得第一個結果,我可以弄清楚其余部分。
3 回答

互換的青春
TA貢獻1797條經(jīng)驗 獲得超6個贊
假設所有密鑰始終存在于所有dicts中:
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數(shù)組:
ds = [d1, d2]d = {}for k in d1.keys(): d[k] = np.concatenate(list(d[k] for d in ds))

絕地無雙
TA貢獻1946條經(jīng)驗 獲得超4個贊
這是一個通用的解決方案,可以處理任意數(shù)量的字典,例如當鍵只在某些字典中時:
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.iteritems(): dd[key].append(value)print(dd)
顯示:
defaultdict(<type 'list'>, {1: [2, 6], 3: [4, 7]})
另外,要獲得你的.attrib
,只需append(value)
改為append(value.attrib)

ABOUTYOU
TA貢獻1812條經(jīng)驗 獲得超5個贊
如果你只有d1和d2,
from collections import defaultdict d = defaultdict(list)for a, b in d1.items() + d2.items(): d[a].append(b)
添加回答
舉報
0/150
提交
取消