Python: Funktion auf Werte im verschachtelten Wörterbuch anwenden

8

Ich habe einen beliebig großen Satz verschachtelter Wörterbücher:

%Vor%

und ich möchte grundsätzlich eine Funktion auf alle Ganzzahlen in den Wörterbüchern anwenden, so wie map , denke ich, aber für verschachtelte Wörterbücher.

Also: map_nested_dicts(x, lambda v: v + 7) wäre die Art von Ziel.

Ich bin fest, wie ich die Schlüsselschichten am besten speichern kann, um den geänderten Wert wieder an die richtige Position zu bringen.

Was wäre der beste Weg dazu?

    
Jean-Luc 04.10.2015, 15:38
quelle

2 Antworten

13

Besuchen Sie alle verschachtelten Werte rekursiv:

%Vor%

In einigen Fällen ist es wünschenswert, das ursprüngliche dict-Objekt zu ändern (um es nicht neu zu erstellen):

%Vor%

Wenn Sie Python 3 verwenden:

  • ersetzen Sie dict.iteritems durch dict.items

  • ersetzen Sie import collections durch import collections.abc

  • ersetzen Sie collections.Mapping durch collections.abc.Mapping

vaultah 04.10.2015, 15:44
quelle
1

Nur um Vaulths Antwort zu erweitern, wenn eines Ihrer Elemente eine Liste sein kann, und Sie möchten diese auch behandeln:

%Vor%     
ikku100 12.04.2017 08:39
quelle