2017-12-04 18 views
-1

兼ね備え値はPythonの辞書 - 私はこれらの辞書を持っている

{ 
    'id': 5, 
    'quantity: 10 
} 

{ 
    'id': 5, 
    'quantity: 15 
} 

私はこの

{ 
    'id': 5, 
    'quantity': 25 
} 

EDITような何かをしたい:基本的に、私は私が簡略化された場合 ids似て申し訳ありませんの数量を組み合わせたい私質問のやりすぎ。はい、私はこれらのdictsのリストを持っています

products = [{...}, {...}, {...}, ...] 
+0

は、リストか何かでそれらの異なる辞書はdic1に各キーを反復するためにforループを使用するシンプルなソリューションです?です。あなたの質問を明確に例を挙げてご記入ください – yash

答えて

-1

あなたはdictの理解を使うことができます。

d = {key: dict1[key] + dict2[key] for key in dict1} 

辞書がまったく同じキーを持つ場合にのみ、これは機能します。より複雑な状況では、表現されていないキーがあるか、KeyErrorを投げます。これが問題の場合は、collections.Counterオブジェクトを使用してみるか(整数のデフォルト値を0にすることでKeyErrorを回避するか)、コードをリファクタリングして、これをループに分割して必要なものを正確に得ることができます。

dictsが異なるIDを持っている可能性がある場合、これは動作します:

from collections import Counter 
c1 = Counter(dict1) 

for key in dict2: 
    c1[key] += dict2[key] 

c1あなたのコメントを追加 - 一緒の辞書があります。 dict1dict2に含まれていないキーがある場合は、初期化のステップでc1に表示されます。 dict2dict1以外のキーがある場合は、変更なしでc1に追加されます。

+0

キーのセットが両方の辞書で正確に同じ場合にのみ機能します。 – jo9k

+1

@ jo9k私の編集では、あなたはそれに私を打つ。しかしながら、それがOPによって提示される状況である。彼らが何を求めているのかは不明です。 – colopop

0

これは

dic1 = {'id': 5, 'quantity': 10} 
dic2 = {'id': 5, 'quantity': 15} 

for key in dic1: 
    if key in dic2: 
     dic1[key] += dic2[key] 
+0

下の私の解決策と同じ問題ですが、少し劇的です。辞書が全く同じキーを共有していない場合、あなたは 'KeyError'を取得します。それでも、これはOPによって提示された問題に対する解決策であることに同意する。 – colopop

+0

これは '{'id':10、 'quantity':25}を与え、OPは' {'id':5、 'quantity':25} ' – Acccumulation

+0

を要求します。 – Manjunath

関連する問題