Wie erstelle ich ein einzelnes Python dict aus einer Liste von Dicts, indem ich Werte mit gemeinsamen Schlüsseln summiere?

7

Ich habe eine Liste von Wörterbüchern, z. B .:

%Vor%

Alle Wörterbücher haben die gleichen Schlüssel, z.B. a , b , c . Ich möchte ein einzelnes Wörterbuch mit denselben Schlüsseln erstellen, wobei die Werte die Summe der Werte mit den gleichen Schlüsseln aus allen Wörterbüchern in der ursprünglichen Liste sind.

Im obigen Beispiel sollte die Ausgabe also lauten:

%Vor%

Was wäre der effizienteste Weg, dies zu tun? Ich habe derzeit:

%Vor%     
msanders 10.06.2009, 10:01
quelle

3 Antworten

18

Wenn alle Diktate alle Schlüssel haben, können Sie dies wie folgt tun:

%Vor%

[Bearbeiten] Wenn Geschwindigkeit eine große Priorität hat, können Sie auch ~ 20% (wenn auch auf Kosten einiger Lesbarkeit) mit dem folgenden Rasieren:

%Vor%

Die Geschwindigkeit hängt von der Größe des Diktats ab. Ich erhalte die folgenden Timings für die ursprüngliche 3-Item-Liste und für verschiedene Größen (erstellt durch Multiplizieren der ursprünglichen Liste mit 10, 100 oder 1000 usw.):

%Vor%

(Alle Zeiten für 10.000 Läufe)

So ist es für nur 3 etwas langsamer, aber für größere Listen zwei- bis dreimal so schnell.

    
Brian 10.06.2009, 10:06
quelle
7

Versuchen Sie es.

%Vor%     
S.Lott 10.06.2009 10:52
quelle
0

Ich bin mir nicht sicher, wie es sich mit den anderen Antworten verhält, aber es gibt immer

%Vor%

Counter ist eine Unterklasse von dict und kann anstelle von dict an den meisten Stellen verwendet werden. Bei Bedarf können Sie es einfach wieder in ein dict

konvertieren %Vor%     
Matt 18.10.2012 17:46
quelle

Tags und Links