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
Barbara StreisandOriginal
2024-12-15 08:56:09306Durchsuche

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)

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}

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!

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