2016-05-03 54 views
0

我有以下字典:問題在python比較不同的字典

dict1=[{'code':'fgx23','number':23},{'code':'dx22a','number':2},{'code':'dsw23','number':10}] 

dict2=[{'code':'dx22a','number':9},{'code':'dsw23','number':1},{'code':'fgx23','number':20}] 

的問題是:如何添加具有相同的代碼

例如數字,在「dict1」代碼「 dx22a「的編號爲2,」dict2「的編碼爲」dx22a「的編號爲9,因此結果爲11。

幫助和感謝

+0

如何處理沒有匹配的數字?假設的輸出是什麼?另一個詞典列表dict3? –

+0

做一個新的字典,循環每個字典的列表,使代碼的價值作爲新的字典的關鍵和數字,因爲它的價值。 – taesu

回答

1
dict1=[{'code':'fgx23','number':23},{'code':'dx22a','number':2},{'code':'dsw23','number':10}] 
dict2=[{'code':'dx22a','number':9},{'code':'dsw23','number':1},{'code':'fgx23','number':20}] 
consolidated = {i['code']:i['number'] for i in dict1} 
for i in dict2: 
    if i['code'] in consolidated: 
     consolidated[i['code']] += i['number'] 
    else: 
     consolidated[i['code']] = i['number'] 
print(consolidated) 
+0

非常感謝,它的作品完美:) – Python241820

+0

我希望你學習它背後的邏輯。歡呼聲 – taesu

+0

這輸出一個字典,這個問題正在與詞典列表。 –

1
dict1=[{'code':'fgx23','number':23},{'code':'dx22a','number':2},{'code':'dsw23','number':10}] 
dict2=[{'code':'dx22a','number':9},{'code':'dsw23','number':1},{'code':'fgx23','number':20}] 
dict3 = [] 
for key, value in [(i['code'], i['number']) for i in dict1]: 
    for value2 in ([q['number'] for q in dict2 if q['code'] == key]): 
     dict3.append({'code': key,'number': value + value2}) 
print (dict3) 

這是假設你只想dict3有同時出現在dict1和dict2鍵。此外,您的預期輸出是與dict1和dict2(詞典列表)相同的格式。此外,dict1和dict2中的每個代碼中只有一個代碼。

+0

非常感謝,這也完美:) – Python241820