2017-05-10 5 views
0

Stellen Sie sich vor ich dieses Wörterbuch in Python haben:Python3 Liste Ausdruck

dict = {'arr': [{'prop1': 'foo'}, {'prop1': 'bar'}]} 

und ich möchte die ‚PROP1‘ Werte aller Elemente in arr ‚foobar‘ ändern, ich weitergehen könnte:

Aber ich würde gerne wissen, ob es eine Möglichkeit gibt, dies mit einem Listenausdruck zu tun.

Antwort

3

Sie können, aber nur, wenn Sie die ganze Wörterbuch jeden Schritt ersetzen:

dict['arr'] = [ 
    {k: 'foobar' if k == 'prop1' else v for k, v in d.items()} 
    for d in dict['arr']] 

Dies vorausgesetzt, dass Sie in diesen Wörterbücher andere Tasten haben. Wenn Sie nicht nur neue Wörterbücher erzeugen mit diesem einem Schlüssel:

dict['arr'] = [{'prop1': 'foobar'} for _ in dict['arr']] 

Persönlich, wenn alles, was Sie tun, ist ein Schlüssel-Wert-Paar in den Wörterbuch zu aktualisieren, nur Stick zu Ihrer ursprünglichen for Schleife.

+0

gut hinzuzufügen, dass das ist, weil ein Listenausdruck immer eine neue Liste zurückgibt. Wenn Sie also die Variable aktualisieren möchten, müssen Sie das Ganze überschreiben –