Modificación iterativa del diccionario
Es común tener que eliminar elementos de un diccionario mientras se itera sobre él simultáneamente. Sin embargo, esta operación no es compatible de forma nativa con Python.
Modificar un diccionario mientras se itera sobre él puede generar errores. Por ejemplo, el fragmento de código que proporcionó puede fallar en Python 3 con el error:
RuntimeError: dictionary changed size during iteration.
Solución Python 3
En Python 3, la solución es crear una lista de claves del diccionario y, en su lugar, iterar sobre esa lista. Aquí tienes un ejemplo:
# Python 3 or higher
for k in list(mydict.keys()):
if mydict[k] == 3:
del mydict[k]
Este enfoque funciona porque una lista es inmutable y no se verá afectada por los cambios en el diccionario.
Solución Python 2
En Python 2, el método llaves() devuelve un iterador, que no se puede modificar durante la iteración. Para modificar el diccionario, puede utilizar el siguiente método:
# Python 2
for k, v in mydict.items():
if v == 3:
del mydict[k]
En Python 2, también puedes convertir el iterador en una lista:
for k in mydict.keys():
if mydict[k] == 3:
del mydict[k]
Enfoque alternativo
Alternativamente, puedes usar el método pop() para eliminar elementos del diccionario mientras iteras:
for k in list(mydict.keys()):
if k == 3:
mydict.pop(k)
Tenga en cuenta que este enfoque es más eficiente porque no crea una lista adicional.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3