En este artículo discutiremos 6 formas diferentes de eliminar una clave de un diccionario en python, es decir,
- Eliminar una clave de un diccionario usando dict.aparecer().
- Borra una clave de un diccionario usando pop () y prueba/except.
- Elimina una clave de un diccionario usando items () & bucle for.
- Eliminar una clave de un diccionario usando items () & Comprensión de diccionario.
- Eliminar una clave de un diccionario usando del.
- Eliminar una clave de un diccionario usando la palabra clave supr y probar / excepto.
Supongamos que tenemos un diccionario de cadena e int, es decir,
# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}
Ahora queremos eliminar un elemento de este diccionario cuya clave es «at». Hay diferentes maneras de hacerlo. Veamos uno por uno,
Eliminar una clave de un diccionario de uso de dict.pop()
En la clase de diccionario Python proporciona un método pop () para eliminar un elemento del diccionario basado en la clave i. e.
dictionary.pop(key)
- Si la clave dada existe en el diccionario, dict.pop() elimina el elemento con la clave dada y devuelve su valor.
- Si la clave dada no existe en el diccionario, devuelve el valor predeterminado dado.
- Si la clave dada no existe en el diccionario y no se pasa ningún valor predeterminado a pop (), entonces lanzará KeyError
Eliminemos un elemento de dict usando pop(),
key_to_be_deleted = 'this'# As 'this' key is present in dict, so pop() will delete# its entry and return its valueresult = word_freq_dict.pop(key_to_be_deleted, None)print("Deleted item's value = ", result)print("Updated Dictionary :", word_freq_dict)
Producto:
Deleted item's value = 43Updated Dictionary : {'Hello': 56, 'at': 23, 'test': 43}
Eliminó el par clave-valor del diccionario donde la clave era ‘esto’ y también devolvió su valor.
- Python dict.método pop () explicado en detalle
- ¿Cómo eliminar varias claves del Diccionario mientras se itera?
Eliminar una clave del diccionario si existe usando pop()
El valor predeterminado en pop() es necesario, porque si la clave dada no está presente en el diccionario y no se da ningún valor predeterminado en pop (), entonces lanzará KeyError. Eliminemos un elemento que no está presente en el diccionario usando la función pop() y sin pasar un argumento de valor predeterminado en pop (), es decir, Error
key_to_be_deleted = 'where'word_freq_dict.pop(key_to_be_deleted)
:
KeyError: 'where'
Si la tecla dada en la función pop() no está presente en el diccionario y tampoco se proporciona el valor predeterminado, entonces pop() puede lanzar KeyError. Por lo tanto, para evitar ese error, siempre debemos verificar si la clave existe en el diccionario antes de intentar eliminarla usando la función pop() y sin ningún valor predeterminado, es decir,
key_to_be_deleted = 'where'if key_to_be_deleted in word_freq_dict: word_freq_dict.pop(key_to_be_deleted)else: print(f'Key {key_to_be_deleted} is not in the dictionary')
Salida:
Key where is not in the dictionary
También podemos usar el try / except para manejar ese error,
key_to_be_deleted = 'where'try: word_freq_dict.pop(key_to_be_deleted)except KeyError: print(f'Key {key_to_be_deleted} is not in the dictionary')
Producto:
Key where is not in the dictionary
Eliminar una clave de un diccionario utilizando items() & para bucle
Iterar sobre la clave y filtrar la clave que debe eliminarse, es decir,
# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}key_to_be_deleted = 'at'new_dict = {}for key, value in word_freq_dict.items(): if key is not key_to_be_deleted: new_dict = valueword_freq_dict = new_dictprint(word_freq_dict)
Salida:
{'Hello': 56, 'test': 43, 'this': 43}
Creamos un nuevo diccionario temporal y luego repetimos sobre todos los pares clave-valor del diccionario original. Durante la iteración, copiamos el par clave-valor al nuevo diccionario temporal solo si la clave no es igual a la clave que se va a eliminar. Una vez finalizada la iteración, copiamos el nuevo contenido temporal del diccionario al diccionario original. En este enfoque no hay riesgo de error de clave, etc.
Eliminar una clave de un diccionario usando items() & Comprensión de diccionario
Usando la lógica del ejemplo anterior podemos filtrar el contenido del diccionario basado en la clave usando items () & comprensión de diccionario,
word_freq_dict = {key: value for key, value\ in word_freq_dict.items()\ if key is not key_to_be_deleted}print(word_freq_dict)
Producto:
{'Hello': 56, 'test': 43, 'this': 43}
Iteramos sobre los pares clave-valor del diccionario y construimos un nuevo diccionario usando la comprensión del diccionario. Pero excluimos el par donde la clave coincidía con la clave que se eliminaría. Luego asignamos este nuevo diccionario al diccionario original. Se dio el efecto de que el elemento del diccionario se elimina en función de la clave.
Por lo tanto, el beneficio de este enfoque es que no necesita preocuparse por el error de clave en caso de que la clave no exista en el diccionario.
Eliminar una clave de un diccionario usando del
Podemos usar la instrucción del para eliminar un par clave-valor del diccionario basado en la clave,
del dict
Primero seleccione el elemento de un diccionario pasando la clave en el operador de subíndice y luego pásela a la instrucción supr. Si la clave está presente en el diccionario, eliminará la clave y el valor correspondiente del diccionario. Pero si la clave dada no está presente en el diccionario, entonces lanzará un error, es decir, KeyError.
Usémoslo para eliminar la clave del diccionario mencionado anteriormente,
# Dictionary of strings and intword_freq_dict = {"Hello": 56, "at": 23, "test": 43, "this": 43}# Deleting an item from dictionary using deldel word_freq_dictprint(word_freq_dict)
Producto:
{'Hello': 56, 'test': 43, 'this': 43}
Eliminó el elemento del diccionario donde la clave estaba ‘at’. Pero qué pasa si usamos una sentencia del con una clave que no existe en el diccionario, entonces puede lanzar KeyError. Por ejemplo,
key_to_be_deleted = 'where'del word_freq_dict
Salida:
KeyError: 'where'
Por lo tanto, siempre debemos verificar si la clave existe en el diccionario antes de intentar eliminarla utilizando la palabra clave supr para evitar el error de clave,
# If key exist in dictionary then delete it using del.key_to_be_deleted = 'where'if key_to_be_deleted in word_freq_dict: del word_freq_dictelse: print(f'Key {key_to_be_deleted} is not in the dictionary')
Producto:
Key where is not in the dictionary
Borrando una clave de un diccionario usando la palabra clave del y try / except
Si no queremos una comprobación if antes de llamar a del, podemos usar el try / except también. Intentemos eliminar una clave que no existe en el diccionario y detectemos el error también usando try / except,
# If key exist in dictionary then delete it using del.key_to_be_deleted = 'where'try: del word_freq_dictexcept KeyError: print(f'Key {key_to_be_deleted} is not in the dictionary')
Producto:
Key where is not in the dictionary
Conclusión:
Estas fueron las 6 formas diferentes de eliminar una clave de un diccionario en python.