Cómo eliminar un elemento de un diccionario Python
-
La sentencia
del
para eliminar el elemento del diccionario Python -
La función
dict.pop()
para eliminar el elemento de diccionario Python - Borrar múltiples elementos de un diccionario Python
- Características de rendimiento
A veces tu diccionario Python contiene una o varias claves que quieres eliminar. Puedes hacerlo de varias maneras diferentes.
La sentencia del
para eliminar el elemento del diccionario Python
Una aproximación es usar la sentencia del
incorporada en Python.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['fats']
>>> meal
{'proteins': 10, 'carbohydrates': 80}
Tenga en cuenta que si intenta eliminar un elemento mediante una clave que no está presente en el diccionario,
El tiempo de ejecución de Python lanzará un KeyError
.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['water']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'water'
La función dict.pop()
para eliminar el elemento de diccionario Python
Otra aproximación es usar la función dict.pop()
.
La ventaja de este método es que le permite especificar
el valor por defecto a devolver si la clave solicitada no existe
en el diccionario.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water', 3000)
3000
>>> meal.pop('fats', 3000)
10
>>> meal
{'proteins': 10, 'carbohydrates': 80}
Tenga en cuenta que si no proporciona el valor predeterminado a devolver y el
no existe, también obtendrá un error en tiempo de ejecución, como del
arriba.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'water'
Borrar múltiples elementos de un diccionario Python
Si necesita eliminar varios elementos de un diccionario de una sola vez,
Python 3 ofrece un práctico listado de comprensiones, que puedes emplear para este propósito.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key) for key in ['fats', 'proteins']]
[10, 10]
>>> meal
{'carbohydrates': 80}
Ten en cuenta que con el enfoque anterior, Python todavía se bloqueará si una de las claves pasadas no está en el diccionario.
Para evitar este problema, puede dar un segundo argumento a dict.pop()
como valor de retorno por defecto.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key, None) for key in ['water', 'sugars']]
[None, None]
>>> meal
{'fats': 10, 'proteins': 10, 'carbohydrates': 80}
Características de rendimiento
El uso de la sentencia del
y dict.pop()
tienen diferentes características de rendimiento.
>>> from timeit import timeit
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; del meal['fats']")
0.12977536499965936
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; meal.pop('fats', None)")
0.21620816600079706
Como se desprende de los tiempos anteriores, la sentencia del
es casi el doble de rápida.
Sin embargo, dict.pop()
con un valor de reserva es más seguro ya que le ayudará a evitar errores en tiempo de ejecución.
Utilice el primero si está seguro de que las claves deben estar presentes en el diccionario, y prefiera el segundo en caso contrario.
Artículo relacionado - Python Dictionary
- Cómo comprobar si existe una clave en un diccionario en Python
- Convertir un diccionario en una lista en Python
- Cómo obtener todos los archivos de un directorio
- Cómo encontrar el valor máximo en el Diccionario Python
- Cómo ordenar un diccionario Python por valor
- Cómo fusionar dos diccionarios en Python 2 y 3