2009-07-02 15 views
21

Ok, sto provando a filtrare un elenco/dizionario passato a me e "pulirlo" un po ', poiché ci sono alcuni valori in esso di cui ho bisogno per sbarazzarmi.Sostituzione di valori in una lista/dizionario Python?

Quindi, se si sta cercando in questo modo:

"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"...}] 

Come dovrei rapidamente e facilmente correre attraverso di essa tutti e sostituire tutti i valori di "AAA" con qualcosa come "XXX"?

L'attenzione è sulla velocità e sulle risorse, in quanto possono essere elenchi lunghi e non voglio che questo processo consumi troppo tempo.

risposta

28
DATA = {"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]} 

for name, datalist in DATA.iteritems(): # Or items() in Python 3.x 
    for datadict in datalist: 
     for key, value in datadict.items(): 
      if value == "AAA": 
       datadict[key] = "XXX" 

print (DATA) 
# Prints {'records': [{'key3': 'CCC', 'key2': 'BBB', 'key1': 'XXX', 'key4': 'XXX'}]} 
+0

Yep, che ha funzionato come un fascino. Mi mancava uno dei loop esterni e ricevevo l'errore list/items() ... grazie! –

10
dic = root['records'][0] 
for i, j in dic.items():  # use iteritems in py2k 
    if j == 'AAA': 
     dic[i] = 'xxx' 
Problemi correlati