title python
En Python, ¿cómo recorro el diccionario y cambio el valor si es igual a algo? (3)
Las comprensiones suelen ser más rápidas, y esto tiene la ventaja de no editar mydict
durante la iteración:
mydict = dict((k, v if v else '''') for k, v in mydict.items())
Si el valor es Ninguno, me gustaría cambiarlo a "" (cadena vacía).
Comienzo así, pero me olvido:
for k, v in mydict.items():
if v is None:
... right?
Podría crear una comprensión estricta de solo los elementos cuyos valores son Ninguno, y luego actualizar nuevamente al original:
tmp = dict((k,"") for k,v in mydict.iteritems() if v is None)
mydict.update(tmp)
Actualización - hizo algunas pruebas de rendimiento
Bueno, después de probar los dictados de 100 a 10.000 elementos, con un porcentaje variable de valores Ninguno, el rendimiento de la solución de Alex es el doble de rápido que esta solución.
for k, v in mydict.iteritems():
if v is None:
mydict[k] = ''''
En un caso más general, por ejemplo, si agregas o quitas claves, puede que no sea seguro cambiar la estructura del contenedor en el que estás haciendo bucles, por lo que usar items
para reproducir en una lista independiente podría ser prudente. pero la asignación de un valor diferente en un índice dado no tiene ningún problema, por lo tanto, en Python 2.any, es mejor usar iteritems
.