Python Programming

Effizientes Zusammenführen von Dictionaries in Python 2 und 3

Spread the love

Inhaltsverzeichnis

Dictionaries in Python 2.7 zusammenführen

Python 2.7 bietet nicht die elegante Dictionary-Zusammenführungsfunktionalität späterer Versionen. Wir verlassen uns hauptsächlich auf die update()-Methode oder, seltener, auf die Dictionary-Verkettung.

Verwendung von update()

Die update()-Methode modifiziert das Dictionary, auf das sie angewendet wird, und fügt Schlüssel-Wert-Paare aus einem anderen Dictionary hinzu. Vorhandene Schlüssel werden durch Werte aus dem zweiten Dictionary überschrieben.


dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}

dict1.update(dict2)
print(dict1)  # Ausgabe: {'a': 1, 'b': 3, 'c': 4}
  

Dictionary-Verkettung

Obwohl möglich, ist dieser Ansatz weniger effizient und erfordert die Erstellung eines neuen Dictionaries. Er ist im Allgemeinen update() unterlegen.


dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}

merged_dict = dict(dict1.items() + dict2.items())
print(merged_dict)  # Ausgabe: {'a': 1, 'b': 3, 'c': 4}

#Alternative mit dict.copy():
merged_dict = dict1.copy()
merged_dict.update(dict2)
print(merged_dict) #Ausgabe: {'a': 1, 'b': 3, 'c': 4}
  

Dictionary-Zusammenführung in Python 3.5+

Python 3.5 führte das deutlich sauberere Dictionary-Auspacken mit dem **-Operator ein. Dies erstellt ein neues Dictionary, das alle Schlüssel-Wert-Paare kombiniert. Doppelte Schlüssel werden durch den Wert aus dem rechtsexten Dictionary aufgelöst.


dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}

merged_dict = {**dict1, **dict2}
print(merged_dict)  # Ausgabe: {'a': 1, 'b': 3, 'c': 4}
  

Dies ist aufgrund seiner Lesbarkeit und der Vermeidung von Modifikationen vor Ort im Allgemeinen die bevorzugte Methode.

Vergleich und Best Practices

Die optimale Methode hängt von Ihrer Python-Version und Ihrem Codierungsstil ab. Für Python 2.7 wird update() empfohlen. Für Python 3.5 und höher bietet das Dictionary-Auspacken (**) eine bessere Lesbarkeit und vermeidet potenzielle Nebeneffekte. In beiden Fällen überschreiben spätere Dictionaries die Werte doppelter Schlüssel. Für eine komplexere Behandlung von Schlüsselkollisionen (z. B. das Kombinieren von Werten) müssen Sie eine benutzerdefinierte Logik implementieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert