¿Cómo eliminar elementos de un diccionario mientras se itera sobre él?

| | | | | | |

¿Es legítimo eliminar elementos de un diccionario en Python mientras se itera sobre él?

Por ejemplo:

para k, v en mydict.iteritems(): if k == val: del mydict[k] 

La idea es eliminar del diccionario los elementos que no cumplen una determinada condición, en lugar de crear un nuevo diccionario que sea un subconjunto del que se está iterando.

¿Es esta una buena solución? ¿Existen formas más elegantes/eficientes?