Как удалить элемент из словаря Pythonа

  1. Операция del для удаления элемента словаря Python
  2. Функция dict.pop() для удаления элемента словаря Python
  3. Удаление нескольких элементов из словаря Python
  4. Эксплуатационные характеристики

Иногда ваш словарь Python содержит ключ или несколько ключей, которые вы хотите удалить. Вы можете сделать это несколькими различными способами.

Операция del для удаления элемента словаря Python

Один из подходов заключается в использовании встроенного заявления Python del.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['fats']
>>> meal
{'proteins': 10, 'carbohydrates': 80}

Обратите внимание, что если вы пытаетесь удалить элемент по ключу, которого нет в словаре, Python runtime бросит KeyError.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['water']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'water'

Функция dict.pop() для удаления элемента словаря Python

Другой подход заключается в использовании функции dict.pop(). Положительная сторона этого метода заключается в том, что он позволяет указать значение по умолчанию, которое нужно вернуть, если запрашиваемый ключ не существует. в словаре.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water', 3000)
3000
>>> meal.pop('fats', 3000)
10
>>> meal
{'proteins': 10, 'carbohydrates': 80} 

Обратите внимание, что если вы не укажете значение по умолчанию для возврата и запрошенное значение ключа не существует, вы также получите ошибку во время выполнения, как del выше.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'water'

Удаление нескольких элементов из словаря Python

Если необходимо удалить несколько элементов из словаря за один заход, Python 3 предлагает удобный список понимания, который вы можете использовать для этой цели.

>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key) for key in ['fats', 'proteins']]
[10, 10]
>>> meal
{'carbohydrates': 80}

Обратите внимание, что при описанном выше подходе, Python все равно аварийно завершает работу, если один из передаваемых ключей отсутствует в словаре. Чтобы обойти эту проблему, вы можете дать второй аргумент dict.pop() в качестве возвращаемого значения по умолчанию.

>>> 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}

Эксплуатационные характеристики

Использование del утверждения и dict.pop() имеют различные характеристики производительности.

>>> 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

Как следует из приведенных выше таймингов, оператор del почти в два раза быстрее.

Однако, dict.pop() со значением падения` является более безопасным, так как это поможет Вам избежать ошибок во время выполнения.

Используйте первое, если Вы уверены, что ключи должны присутствовать в словаре, и предпочитаете второе.

Сопутствующая статья - Python dictionary

  • Как проверить наличие ключа в словаре на Python языке
  • Как сортировать Pythonский словарь по значению
  • Как объединить два словаря на Python 2 и 3
  • Как получить ключи от словаря в виде списка на Python
  • comments powered by Disqus