2017-07-20 29 views
0

我遇到了一個關於通過兩個python字典添加數據的小問題。通過Python中的兩個詞典添加缺少的數據

這裏是我的代碼:

dicta = {'name' : 'character', 'age': 30 } 
dictb = {'name' : 'Jon'} 

我想補充的鍵和值 '年齡':30到dictb。 所以我做:

for i in dicta: 
    for j in dictb: 
     if(i not in dictb): 
      dictb.update(i) 

然後什麼也不加,我遇到這個問題:

ValueError異常:詞典更新序列元素#0的長度爲1; 2是必需的

這是發生,因爲在我的dictb沒有空的空間?

我該如何解決這個問題?

謝謝你的回覆!

此致,卡羅。

回答

3

您不需要嵌套循環,因爲您正在使用。只是遍歷dicta的鑰匙,並檢查是否鑰匙dictb或不存在:

for k in dicta: 
    if k not in dictb: 
     dictb[k] = dicta[k] 

問題與您現有的代碼是i是一個關鍵,而不是一本字典。因此調用dict.update(int)失敗。你想要的線沿線的東西(對現有代碼):

dictb.update({ i : dicta[i] }) 

雖然仍擺脫內部循環。

+1

好,謝謝,它的工作! :) 我知道了。很快就會接受你的回答! :) – Karro

0

這將工作得很好!

dicta = {'name' : 'character', 'age': 30 } 
dictb = {'name' : 'Jon'} 
for key, value in dicta.items(): # items() works at python3 use iteritems in 2 
    if key not in dictb: 
     dictb[key] = value 

更好

for key in dicta: 
    if key not in dictb: 
     dictb[key] = dicta[key] 
+0

請記住'.items' /'.iteritems'是浪費的,因爲您創建了整個字典的副本作爲元組進行迭代。 –

+0

我以爲你是對的, – Maybe

+0

,但我認爲關鍵字訪問不美麗:)大聲笑 – Maybe

0

使用setdefault:dictb.setdefault( '時代',30)