2014-11-03 105 views
0

我有點通過這段代碼不解:這是更換與字典的字典B鍵值值

def newval(A, B): 
    for key in A: 
     if key in B: 
      B[key][1] = A[key][0] 
      return B 

這不會在我出於某種原因程序運行在所有。
基本上我希望它通過字典A,循環並在字典B中找到相同的密鑰,然後用A替換字典B的鍵值。

+0

什麼是「將無法運行」是什麼意思?什麼是類型的值在字典中?如果他們比匹配鍵多?你想替換所有相應的值嗎? – 2014-11-03 06:10:58

+0

你的函數在B中第一個'key'爲'True'後返回。這是正確的行爲? – 2014-11-03 06:30:44

+0

它甚至沒有通過函數,這就是我的意思。 @ YS-L – adam 2014-11-03 14:13:14

回答

0

嘗試下面的代碼,

>>> A = {'foo':2, 'bar':3} 
>>> B = {'foo':5, 'baram':3} 
>>> for key in A: 
    if key in B: 
     B[key]=A[key] 


>>> A 
{'bar': 3, 'foo': 2} 
>>> B 
{'baram': 3, 'foo': 2} 
0

試試這個

def newval(A, B): 
    for key in A: 
     if key in B: 
      B[key] = A[key] 
    return B 
1

您可以通過此代碼嘗試:

def newval(A, B): 
    print A 
    print B 
    for key in A: 
     print key 
     if key in B: 
      print key 
      B[key]=A[key] 
      print B 
     return B 


A = {'asd':4, 'ad':32} 
B = {'asd':5, 'asd':234} 
b=newval(A,B) 
print b 

輸出:

{'asd': 4} 
{'asd': 4} 
0

沒有任何工作,所以我懷疑正在讀取的文件有問題。這確實是正確的,B字母的關鍵字中有單引號,A沒有,並且根本無法比較它們,因爲它們都不匹配。

原始代碼工作得很好:

def newval(A, B): 
for key in A: 
    if key in B: 
     B[key][1] = A[key][0] 
     return B