2016-05-03 12 views
0

Ich habe die folgenden Wörterbücher:Probleme zu vergleichen verschiedene Wörterbücher in 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}] 

Die Frage ist: wie die Zahlen addieren, die den gleichen Code haben

Zum Beispiel in „dict1“ der Code " dx22a "hat die Nummer 2 und das" dict2 "den Code" dx22a "hat die Nummer 9, also ist das Ergebnis 11.

Hilfe und dank

+0

Was machen Sie mit Zahlen, die keine Übereinstimmungen haben? und was ist die angenommene Ausgabe? eine andere Liste von Wörterbüchern dict3? –

+0

Erstellen Sie ein neues Diktat, führen Sie jede Diktatliste durch, und geben Sie den Codewert als Wert und Nummer des neuen Diktats an. – taesu

Antwort

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

Vielen Dank, es funktioniert perfekt :) – Python241820

+0

Ich hoffe, Sie lernen die Logik dahinter. Prost – taesu

+0

Dies gibt ein Diktat aus, die Frage funktionierte mit einer Liste von Wörterbüchern. –

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) 

Dies setzt voraus, dass Sie nur dict3 Schlüssel haben wollen, die in beiden dict1 und dict2 erscheinen. Auch, dass Ihre beabsichtigte Ausgabe das gleiche Format wie dict1 und dict2 (eine Liste von Wörterbüchern) hat. Außerdem gibt es nur einen Code in dict1 und dict2

+0

Vielen Dank, das funktioniert auch perfekt :) – Python241820

Verwandte Themen