2009-07-02 15 views
21

Ok, estoy tratando de filtrar una lista/diccionario que se me pasó y "limpiarlo" un poco, ya que hay ciertos valores que necesito eliminar.¿Reemplazar valores en una lista/diccionario de Python?

lo tanto, si es que parece esto:

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

¿cómo iba a ejecutar rápida y fácilmente a través de todo y vuelva a colocar todos los valores de "AAA" con algo como "XXX"?

El foco está en la velocidad y los recursos, ya que pueden ser largas listas y no quiero que este proceso consuma demasiado tiempo.

Respuesta

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

Sí, que funcionó como un encanto. Me faltaba uno de los bucles externos y obtuve un error de list/items() ... ¡gracias! –

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