Ich habe ein Python-Wörterbuch dict1
mit mehr als 20.000 Schlüsseln und ich möchte update
es mit einem anderen Wörterbuch dict2
. Die Wörterbücher sehen so aus:
Wenn ich
verwende %Vor% Die Schlüssel von dict1
, die den Schlüsseln von dict2
ähnlich sind, werden mit Werten von dict2
überschrieben. Was ich will ist, wenn eine Taste bereits in dict1 vorhanden ist, dann sollte der Wert dieser Taste in dict2 an den Wert von dict1 angehängt werden. Also
sollte zu
führen %Vor% Eine naive Methode besteht darin, die Schlüssel von dict2
für jeden Schlüssel von dict1
zu durchlaufen und Schlüssel einzufügen oder zu aktualisieren. Gibt es eine bessere Methode? Unterstützt Python eine eingebaute Datenstruktur, die diese Art von Funktionalität unterstützt?
Das ist eigentlich ziemlich einfach mit einem Diktatverständnis und itertools.groupby()
:
Gibt uns:
%Vor%Natürlich wird dadurch ein neues Diktat erstellt, aber wenn Sie brauchen, um das erste Diktat zu aktualisieren, können Sie das trivial machen, indem Sie es mit dem neuen aktualisieren. Wenn Ihre Werte bereits Listen sind, kann dies geringfügige Änderungen erfordern (aber ich nehme an, dass Sie das für die Operation getan haben, in diesem Fall besteht keine Notwendigkeit).
Wenn Sie Python 2.x verwenden, sollten Sie natürlich dict.viewitems()
oder dict.iteritems()
über dict.items()
verwenden. Wenn Sie eine Version von Python vor dict comprehensions verwenden, können Sie stattdessen dict((key , value) for ...)
verwenden.
Tags und Links python algorithm dictionary