Sagen wir, ich habe eine Liste der Wörterbücher:Return-Wörterbuch mit einem geänderten Element
>>> d = [{'a': 2, 'b': 3, 'c': 4}, {'a': 5, 'b': 6, 'c': 7}]
Und ich will eine Karte Operation auszuführen, wo ich in jedem Wörterbuch nur einen Wert ändern. Eine Möglichkeit, das zu tun, ist ein neues Wörterbuch zu erstellen, die einfach die ursprünglichen Werte enthalten zusammen mit den verändert denjenigen:
>>> map(lambda x: {'a': x['a'], 'b': x['b'] + 1, 'c': x['c']}, d)
[{'a': 2, 'c': 4, 'b': 4}, {'a': 5, 'c': 7, 'b': 7}]
Dies kann widerspenstig, wenn die Wörterbücher haben viele Einzelteile.
Eine weitere Möglichkeit könnte sein, eine Funktion zu definieren, die Kopien der Original Wörterbuch und nur die gewünschten Werte verändert:
>>> def change_b(x):
... new_x = x.copy()
... new_x['b'] = x['b'] + 1
... return new_x
...
>>> map(change_b, d)
[{'a': 2, 'c': 4, 'b': 4}, {'a': 5, 'c': 7, 'b': 7}]
Dies erfordert jedoch eine eigene Funktion zu schreiben und verliert die Eleganz eines Lambda-Ausdruck.
Gibt es einen besseren Weg?
Dies ändert das Original 'd'. –