Cómo eliminar un elemento de un diccionario Python

Aliaksei Yursha 30 enero 2023
  1. La sentencia del para eliminar el elemento del diccionario Python
  2. La función dict.pop() para eliminar el elemento de diccionario Python
  3. Borrar múltiples elementos de un diccionario Python
  4. Características de rendimiento
Cómo eliminar un elemento de un diccionario Python

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