Verschachtelte Wörterbücher mit Tastenkomprimierung reduzieren
Wenn Sie mit komplexen Datenstrukturen in Ihrem Code arbeiten, kann es oft nützlich sein, diese zu „glätten“. für eine einfachere Handhabung. Dies gilt insbesondere für verschachtelte Wörterbücher, bei denen mehrere Ebenen von Schlüsseln und Werten Ihre Vorgänge komplexer machen können. In diesem Artikel erfahren Sie, wie Sie ein verschachteltes Wörterbuch reduzieren und gleichzeitig die Schlüssel komprimieren.
Das Problem
Betrachten Sie das folgende verschachtelte Wörterbuch:
{'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y': 10}}, 'd': [1, 2, 3]}
Das Ziel besteht darin, dieses Wörterbuch auf etwas wie Folgendes zu reduzieren:
{'a': 1, 'c_a': 2, 'c_b_x': 5, 'c_b_y': 10, 'd': [1, 2, 3]}
wohin die verschachtelten Schlüssel komprimiert werden Erstellen Sie einen einzelnen, abgeflachten Schlüssel.
Die Lösung
Um das verschachtelte Wörterbuch abzuflachen, können wir die Funktion „flatten()“ aus dem Modul „collections.abc“ verwenden. Diese Funktion kann wie folgt definiert werden:
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)
Verwenden der Funktion
Um die flatten()-Funktion zu verwenden, übergeben Sie einfach das verschachtelte Wörterbuch als Argument. Die Funktion durchläuft das Wörterbuch rekursiv, „flacht“ es und komprimiert die Schlüssel.
>>> 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}
Wie Sie sehen können, verfügt das abgeflachte Wörterbuch über eine einzelne Schlüsselebene, wobei die Schlüssel komprimiert werden, um die Verschachtelung zu integrieren Struktur des Originalwörterbuchs.
Das obige ist der detaillierte Inhalt vonWie kann ich ein verschachteltes Wörterbuch reduzieren und seine Schlüssel in Python komprimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!