2016-10-04 86 views
-1

我試圖處理Python中兩個不同字典的值。 我需要做的是使用兩個字典中具有相同鍵的值進行操作。在Python 3.x中迭代字典

例如,如果字典是:

d1 = {1:30, 2:20, 3:30, 5:80} 
d2 = {1:40, 2:50, 3:60, 4:70, 6:90} 

我需要從鍵12和每個字典3增加值。

我試圖讓值的迭代,但是,當我嘗試使用的線延伸的空迭代與值,如:

sameKeys.extend(d1[i])) 

我得到一個錯誤的關鍵。我嘗試了很多不同的語法,但都沒有工作。

+1

到底是什麼'sameKeys'? –

+1

編輯你的問題,讓你的意圖更清晰,'sameKeys'是什麼?它應該包含什麼?你到目前爲止嘗試過什麼? –

+0

你把他們添加在一個新的字典?到第一個?或只是打印出結果? –

回答

0

下面是一個選項:

d1 = {1:30, 2:20, 3:30, 5:80} 
d2 = {1:40, 2:50, 3:60, 4:70, 6:90} 

dlist = [d1, d2] 


# As a dict comprehension 
result = {k: sum(d[k] for d in dlist) 
      for k in set.intersection(*[set(d) for d in dlist])} 
print result 

# Same as above, but as for loops 
result = {} 
repeated_keys = set(d1) 
for d in dlist: 
    repeated_keys &= set(d) 
for k in repeated_keys: 
    result[k] = 0 
    for d in dlist: 
     result[k] += d[k] 
print result 
+1

由於這是Python 3,因此您可以直接使用這些鍵作爲集合。 {} .keys()是一個集合。 – dawg

1

你可以嘗試這樣的,

for i,j in zip(d1.items(),d2.items()): 
    if i[0] == j[0]: 
     print i[1]+j[1] 

結果

70 
70 
90 
1

遍歷任何字典中。檢查第二個列表中是否存在密鑰。如果存在,請輸入新的字典。下面是示例例如:

>>> d1 = {1:30, 2:20, 3:30, 5:80} 
>>> d2 = {1:40, 2:50, 3:60, 4:70, 6:90} 
>>> d3 = {} 
>>> for key, value in d1.items(): 
...  if key in d2: 
...   d3[key] = value + d2[key] 
... 
>>> d3 
{1: 70, 2: 70, 3: 90} 
>>>