Python: Aktualisieren eines großen Wörterbuchs mit einem anderen großen Wörterbuch

8

Ich versuche, einige Werte eines großen Wörterbuchs mit Werten aus einem anderen Wörterbuch zu aktualisieren, in denen sie ähnliche Schlüssel haben (dasselbe Datum, aber in einem anderen Format). Der Prozess, den ich gerade nutze, ist zu langsam und ich möchte den Engpass reduzieren.

Dies ist meine aktuelle Lösung (schreibt das aktualisierte Diktat in eine Datei):

%Vor%     
Eric Gentil 03.10.2012, 22:21
quelle

2 Antworten

11

Sie sollten die Methode update verwenden, um Wörterbücher zusammenzuführen:

%Vor%

.

Im Moment iterieren Sie über d für jeden Schlüssel in b ... was langsam ist. Sie können dies umgehen, indem Sie zwei Wörterbücher einrichten, die übereinstimmende Schlüssel haben (und gleiche Daten werden dasselbe hashen - vielleicht ist das coole Ding, das hier zu beachten ist, dass der datetime objects hash ist):

%Vor%

Bearbeiten:

Ich habe gerade festgestellt, dass Sie nicht ziemlich ein Update durchführen, da nur die gemeinsamen Werte aktualisiert werden, sondern stattdessen (einmal durch wiederholtes Iterieren):

%Vor%     
Andy Hayden 03.10.2012, 22:25
quelle
2

Vorgeschlagene Änderungen:

  1. Verwenden Sie .iteritems() anstelle von .items() . So wie Sie es haben, wird eine Liste von Paaren im Speicher erstellt und iteriert, was eine Verschwendung darstellt.
  2. Sie haben gesagt, dass das Datumsformat zwischen b und d unterschiedlich ist. Ich schätze, Monat und Tag sind geschaltet? Wenn dies der Fall ist, können Sie immer noch große Einsparungen erzielen, indem Sie den Schlüssel d berechnen und dann die Mitgliedschaft prüfen.

Code mit Änderungen:

%Vor%     
wberry 03.10.2012 23:14
quelle

Tags und Links