Un diccionario en Python es una colección ordenada de valores de datos. A diferencia de otros tipos de datos que contienen solo un valor único como elemento, un diccionario contiene la clave: pares de valores. Las claves del diccionario deben ser únicas y deben ser de un tipo de datos inmutable como: string, entero o tupla.
Nota: En Python 2, las claves del diccionario no estaban ordenadas. A partir de Python 3, están ordenados.
Veamos cómo eliminar elementos de un diccionario mientras se itera sobre él.
Método 1: Usar el método del()
Python3
# Creating a dictionary myDict = {1: 'Geeks', 2: 'For', 3: 'Geeks'} # Iterating through the keys for key in myDict.keys(): if key == 2: del myDict[key] # Modified Dictionary print(myDict)
Producción:
{1: 'Geeks', 3: 'Geeks'}
El código anterior funciona bien para Python2 (ya que en esa versión las claves del diccionario no estaban ordenadas). Pero si lo ejecutamos con Python3, arroja el siguiente error:
for key in myDict.keys(): RuntimeError: dictionary changed size during iteration
Este error de tiempo de ejecución dice que no se permite cambiar el tamaño del diccionario durante la iteración (pero es posible). Ahora, veamos todas las diferentes formas en que podemos eliminar elementos del diccionario mientras iteramos.
Método 2: crear una lista de claves para eliminar
Aquí usamos una lista de comprensión para crear una lista de todas las claves que deben eliminarse y luego iteramos a través de cada clave en esa lista eliminándolas:
Python3
# Creating a dictionary myDict = {1: 'Geeks', 2: 'For', 3: 'Geeks'} # Using a list comprehension to make a list of the keys to be deleted # (keys having value in 3.) delete = [key for key in myDict if key == 3] # delete the key/s for key in delete: del myDict[key] # Modified Dictionary print(myDict)
Producción:
{1: 'Geeks', 2: 'For'}
O si eres nuevo en la lista de comprensiones:
Podemos construir la lista de claves para eliminar usando un bucle for para eso, cree una lista, elimine y agregue claves de todos los valores que queremos eliminar.
Python
# Creating a dictionary myDict = {1: 'Geeks', 2: 'For', 3: 'Geeks'} # create a list of keys to delete delete = [] for key in myDict: if key == 3: delete.append(key) for i in delete: del myDict[i] # Modified Dictionary print(myDict)
Método 3: Usar la lista (myDict)
Python3
# Creating a dictionary myDict = {1: 'Geeks', 2: 'For', 3: 'Geeks'} # Iterating through the list of keys for key in list(myDict): if key == 2: del myDict[key] # Modified Dictionary print(myDict)
Producción:
{1: 'Geeks', 3: 'Geeks'}