2016-09-07 26 views
0

私は最初にd2のd1から一致するキーを見つけようとしている2つの辞書を持っていて、そのキーの3番目の値の減算を両方の辞書から出力しようとしています。 1つのループ関数で?最初に私は2つのステップでそれをやろうとしましたが、これは私にd3の空のリストを与えます、そして、ループを使用しようとしましたが、vが定義されていないというエラーが出ます。2つの辞書のキーと値を比較する

d1 = {'alpha': [5, 9, 11], 'beta': [6, 10, 20], 'gamma': [12, 15, 19]} 
d2 = {'alpha': [3, 8, 20], 'omega': [15, 32, 40], 'ro': [22, 25, 4]} 

d3 = {} 
for key in d1: 
    if key in d2: 
     d3.setdefault(key, []).append 
print d3 
#Should be d3 = {'alpha': [3, 8, 20]} 

#Compare and Calculate the difference between 20 and 11 in the alpha key 
value = d3(key, v(2)) - d1(key, v(2)) 
print value 
#value = 9 

#Can a loop just find the key in d2 and that matches key in d1 
#and calculate the difference? 
for key in d1: 
    if key in d2: 
     value = d2(key, v(2)) - d1(key, v(2)) 
     print value 

考えられますか?

ありがとうございます。 -Jon

+0

'v'は定義されていませんが、' d1'と 'd2'は関数ではないので' d1(...) 'と書くことはできません。 –

答えて

0

あなたは辞書内包表記を使用できます。これはあなたにすべてのキーがd2d1に共通していると値がリストの第三値の差である、辞書を与える

diff = {key: d2[key][2] - d1[key][2] for key in d2 if key in d1} 
# {'alpha': 9} 

d1d2

+0

ありがとう!私はそのようにする方法があることを知っていたが、正確な構文がわからなかった。 – Deuce525

+0

歓迎します:-) –

関連する問題