2016-09-07 1 views
0

У меня есть два словаря, в которых я пытаюсь сначала найти соответствующий ключ из d1 в d2, а затем вывести вычитание третьего значения в этом ключе из обоих словарей .. это можно сделать в одной функции цикла? сначала я попытался сделать это в два этапа, но это дает мне пустой список для d3, затем я попытался использовать цикл, но он дает мне ошибку, что v не определен.Сравнение двух словарных клавиш и значений

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

не только '' 'не определено, а' d1' и 'd2' не являются функциями, поэтому вы не можете написать' d1 (...) '. –

ответ

0

Вы можете использовать словарь понимание:

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

Это даст вам словарь, в котором все ключи являются общими для d2 и d1 и значение разности третьих значений в списках от d1 и d2

+0

Спасибо! Я знал, что есть способ сделать это так, но я не был уверен в точном синтаксисе. – Deuce525

+0

Добро пожаловать :-) –