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
Freigeben: 2024-12-16 02:24:10
Original
819 Leute haben es durchsucht

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]}
Nach dem Login kopieren

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]}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage