Heim >Backend-Entwicklung >Python-Tutorial >Wie glätte ich verschachtelte Wörterbücher mit komprimierten Schlüsseln in Python?
Verschachtelte Wörterbücher mit komprimierten Tasten reduzieren
Stellen Sie sich eine hierarchische Wörterbuchstruktur wie die folgende vor:
{'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]}
An Reduzieren Sie dies in eine stromlinienförmige Struktur wie:
{'a': 1, 'c_a': 2, 'c_b_x': 5, 'c_b_y': 10, 'd': [1, 2, 3]}
beinhaltet Reduzieren sowohl der verschachtelten Liste als auch der darin enthaltenen verschachtelten Wörterbücher.
Ansatz
Dieses Verfahren entspricht den Schritten zum Reduzieren einer verschachtelten Liste. Allerdings ist eine zusätzliche Verarbeitung erforderlich, um das Wörterbuch zu durchlaufen, mithilfe eines Trennzeichens eindeutige Schlüsselnamen für die abgeflachte Struktur zu generieren und das neue Wörterbuch zusammenzustellen.
Implementierung
Verwendung Collections.abc.MutableMapping für die Wörterbuchtypprüfung verwendet das folgende Codefragment Rekursion, um die verschachtelte Struktur zu durchlaufen und die komprimierte Struktur zu erstellen Darstellung:
from collections.abc import MutableMapping def flatten(dictionary, parent_key='', separator='_'): items = [] for key, value in dictionary.items(): new_key = parent_key + separator + key if parent_key else key if isinstance(value, MutableMapping): items.extend(flatten(value, new_key, separator=separator).items()) else: items.append((new_key, value)) return dict(items)
Die Anwendung dieser Methode auf das gegebene Beispielwörterbuch erzeugt die gewünschte abgeflachte Darstellung:
>>> flatten({'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]}) {'a': 1, 'c_a': 2, 'c_b_x': 5, 'd': [1, 2, 3], 'c_b_y': 10}
Diese Technik flacht verschachtelte Wörterbücher effizient ab, indem die Schlüsselnamen mithilfe eines Trennzeichens komprimiert werden eine kompakte und leicht überquerbare Struktur.
Das obige ist der detaillierte Inhalt vonWie glätte ich verschachtelte Wörterbücher mit komprimierten Schlüsseln in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!