Heim > Backend-Entwicklung > Python-Tutorial > Wie reduziere ich ein verschachteltes Wörterbuch in Python?

Wie reduziere ich ein verschachteltes Wörterbuch in Python?

Barbara Streisand
Freigeben: 2024-12-15 08:56:09
Original
226 Leute haben es durchsucht

How Do I Flatten a Nested Dictionary in Python?

Verschachtelte Wörterbücher reduzieren: Schlüssel komprimieren

Um ein verschachteltes Wörterbuch zu reduzieren, müssen Sie jedes Schlüssel-Wert-Paar rekursiv durchlaufen. Erstellen neuer Schlüssel durch Verketten des übergeordneten Schlüssels mit dem aktuellen Schlüssel unter Verwendung eines Trennzeichens, z. B. eines Unterstrich.

Tiefere Ebenen des verschachtelten Wörterbuchs erfordern eine weitere Rekursion mit demselben Prozess.

Sobald Sie die Rekursion abgeschlossen haben, erstellen Sie ein neues Wörterbuch aus den reduzierten Elementen.

Hier ist eine Beispielimplementierung mit Python collections.abc.MutableMapping:

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

Beispielverwendung:

>>> 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

Das obige ist der detaillierte Inhalt vonWie reduziere ich ein verschachteltes Wörterbuch 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