En Python, ¿cómo hago un bucle en el diccionario y cambio el valor si es igual a algo?

Si el valor es Ninguno, me gustaría cambiarlo a “” (cadena vacía).

Empiezo así, pero me olvido:

for k, v in mydict.items(): if v is None: ... right? 

 for k, v in mydict.iteritems(): if v is None: mydict[k] = '' 

En un caso más general, por ejemplo, si estaba agregando o eliminando claves, podría no ser seguro cambiar la estructura del contenedor en el que está haciendo el bucle, por lo que sería prudente utilizar items para hacer un bucle en una lista de copias independientes del mismo. pero la asignación de un valor diferente a un índice existente dado no implica ningún problema, por lo que, en Python 2.any, es mejor usar iteritems .

Podría crear una comprensión de dictado de solo los elementos cuyos valores son Ninguno, y luego actualizar nuevamente en el original:

 tmp = dict((k,"") for k,v in mydict.iteritems() if v is None) mydict.update(tmp) 

Actualización – hice algunas pruebas de rendimiento

Bueno, después de probar dicts de 100 a 10,000 artículos, con un porcentaje variable de valores de Ninguno, el rendimiento de la solución de Alex es casi el doble de rápido que esta solución.

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())