2015-12-05 22 views
2

問: 給定兩個字典命名dict1和dict2,使用「for」循環編寫代碼添加到dict1的dict2所有項目。如果dict1的鍵已經存在於dict2中,請不要將它添加到dict2中。選擇替換鍵時出現重複在字典中,以取代的價值?

例如:

dict1 = {1: "ab", 2: "cd"} 

dict2 = {1: "ef", 3: "gh"} 

運行代碼後,dict2

dict2 = {1: "ef", 3: "gh", 2: "cd"} 

1: "ab"dict1dict2已經存在的關鍵。

我的代碼是:

dict1 = {1: "ab", 2: "cd"} 
dict2 = {1: "ef", 3: "gh"} 
for i in [dict1]: 
    if i not in [dict2]: 
     dict2.update(dict1) 
     print(dict2) 

當我運行它,我dict2dict2 = {1: "ab", 2: "cd", 3: "gh"}

我如何dict2 = {1: "ef", 2: "cd", 3: "gh"}

+0

我知道'dict2 [1] =「ef」'可以工作。但它只能用於這個例子。我不能用這個方法,真正的問題,因爲我不知道是什麼dict1和dict2是等於。 – ProgrammingPikachu

回答

2

怎麼這樣呢?

for i in dict1: 
    if i not in dict2: 
     dict2[i] = dict1[i] 
#=> {1: 'ef', 2: 'cd', 3: 'gh'} 
+0

我試了一下...蟒蛇給了我一個錯誤:「輸入」對象未標化。儘管謝謝! :) – ProgrammingPikachu

+1

@ProgrammingPikachu:你確定你沒有像'dict'而不是'dict1'這樣的錯字來解釋你的錯誤嗎? –

+0

@SergeBallesta +1我在想同樣的事情。忘了提及。 –

0

您可以使用.keys().viewkeys()在python2找到dict1不同的按鍵,只是這些密鑰添加到您的dict2:

dict1 = {1: "ab", 2: "cd"} 

dict2 = {1: "ef", 3: "gh"} 

# .viewkeys() python 2 
for k in dict1.keys() - dict2: 
    dict2[k] = dict1[k] 

print(dict2) 
{1: 'ef', 2: 'cd', 3: 'gh'} 

或者如果你喜歡更新:

dict2.update((k, dict1[k]) for k in dict1.keys() - dict2) 

print(dict2) 
{1: 'ef', 2: 'cd', 3: 'gh'}