4

キーが複数の辞書にある場合、値が一緒に追加されるように結合したい辞書がいくつかあります。例えば:

d1 = {1: 10, 2: 20, 3: 30}
d2 = {1: 1, 2: 2, 3: 3}
d3 = {0: 0}

merged = {1: 11, 2: 22, 3: 33, 0: 0}

Pythonでこれを行う最良の方法は何ですか? 私は defaultdict を見て、何かを考え出そうとしていました。Python 2.6 を使用しています。

4

3 に答える 3

8

を使用してdefaultdict

>>> d = defaultdict(int)
>>> for di in [d1,d2,d3]:
...   for k,v in di.items():
...     d[k] += v
...
>>> dict(d)
{0: 0, 1: 11, 2: 22, 3: 33}
>>>
于 2013-03-28T09:09:17.003 に答える
3

ほとんどの Python 標準関数とライブラリを使用:

dlst = [d1, d2, d3]
for i in dlst:
    for x,y in i.items():
        n[x] = n.get(x, 0)+y

if-elseチェックを使用する代わりにdict.get、デフォルト値を使用するの0は単純で簡単です。

于 2013-03-28T09:25:01.253 に答える
2

何もインポートせずに。.

d4={}
for d in [d1,d2,d3]:
    for k,v in d.items():
        d4.setdefault(k,0)
        d4[k]+=v
print d4

出力:

{0: 0, 1: 11, 2: 22, 3: 33}
于 2013-03-28T09:05:03.610 に答える