Heim >Backend-Entwicklung >Python-Tutorial >Wie glätte ich verschachtelte Wörterbücher mit komprimierten Schlüsseln in Python?

Wie glätte ich verschachtelte Wörterbücher mit komprimierten Schlüsseln in Python?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 02:24:10824Durchsuche

How to Flatten Nested Dictionaries with Compressed Keys 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn