2017-04-12 7 views
4

ABという2つの辞書があるとしましょう。同じキーでも値(整数)は異なるものがあります。どのように2つの辞書を比較することができるので、キーが一致すれば差異を得ることができます(例えばがキー"A"の値であり、yがキー"B"の値であれば結果はx-y)新しい辞書として)。Pythonの2つの辞書の違いを取得する

ゲインをパーセントで比較することもできます(特定の時間に数字のスナップショットである2つの辞書の間で値がどれだけ変化したか)。

+0

はSOへようこそ。あなたのコードを投稿して、どこに行き詰まっているか教えてください。 http://stackoverflow.com/help/how-to-askも読んでください。 –

答えて

3

dictの理解度を使用してキーをループし、各オリジナルから対応する値を差し引くことができますdict

>>> a = {'a': 5, 'b': 3, 'c': 12} 
>>> b = {'a': 1, 'b': 7, 'c': 19} 
>>> {k: b[k] - a[k] for k in a} 
{'a': -4, 'b': 4, 'c': 7} 

これは、両方ともdictが全く同じキーを持っていることを前提としています。それ以外の場合は、キーが1つであればどのような動作が予想されますか?dict(デフォルト値かもしれません)

共有キーのみを評価する場合は、私たちは1行に収まることができる

new_dict={} 
for key in A: 
    if key in B: 
     new_dict[key] = A[key] - B[key] 

...:あなたは新しい辞書に似たキーの違いを取得したい場合は、キーの

>>> {k: b[k] - a[k] for k in a.keys() & b.keys()} 
{'a': -4, 'b': 4, 'c': 7} 
0

、次のような何かを行うことができます

new_dict = { key : A[key] - B[key] for key in A if key in B } 
5

2つの辞書、/同じキーを持っていない可能性があり、あなたがこれを行うことができAB考える:

A = {'a':5, 't':4, 'd':2} 
B = {'s':11, 'a':4, 'd': 0} 

C = {x: A[x] - B[x] for x in A if x in B} 

のみ両方の辞書で同じキーを減算します。

2
def difference_dict(Dict_A, Dict_B): 
    output_dict = {} 
    for key in Dict_A.keys(): 
     if key in Dict_B.keys(): 
      output_dict[key] = abs(Dict_A[key] - Dict_B[key]) 
    return output_dict 

>>> Dict_A = {'a': 4, 'b': 3, 'c':7} 
>>> Dict_B = {'a': 3, 'c': 23, 'd': 2} 
>>> Diff = difference_dict(Dict_A, Dict_B) 
>>> Diff 
{'a': 1, 'c': 16} 

あなたがすべて1行に、それが可能だろうとフィットしたい場合は...

def difference_dict(Dict_A, Dict_B): 
    output_dict = {key: abs(Dict_A[key] - Dict_B[key]) for key in Dict_A.keys() if key in Dict_B.keys()} 
    return output_dict 
関連する問題