В этом руководстве мы расскажем, как безопасно удалить ключ из словаря в Python. Под безопасностью мы подразумеваем, что код не выдаст вам ошибку при попытке удалить несуществующий ключ.
Мы рассмотрим три способа удаления ключа из словаря. Вы узнаете, как это сделать, используя метод .pop()
, ключевое слово del
, а также генератор словаря. Также мы остановимся на том, как удалить сразу несколько ключей. Что ж, давайте начнем!
Быстрый ответ: для удаления ключа из словаря в Python используйте метод .pop()
. Выглядеть это может следующим образом:
Однако давайте всё-таки разберемся в этой теме подробнее и рассмотрим разные способы и нюансы удаления ключа из словаря.
Что такое словари в Python?
Начнем с того, а что вообще такое словарь в Python. Словари — это встроенные структуры данных, которые используются для хранения данных в виде пар ключ:значение. Начиная с Python 3.7 словари являются упорядоченными объектами. Они также являются изменяемыми и не позволяют дублировать ключи.
Чтобы создать пустой словарь, например, a_dict
, вы можете написать следующее:
a_dict = dict() # Или: a_dict = {}
Теперь давайте создадим новый словарь, который мы будем использовать в этом руководстве. Выглядеть он будет так:
a_dict = { 'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35 }
Теперь, когда вы понимаете, что такое словари, давайте посмотрим, как удалить ключ из словаря.
[python_ad_block]Удаление ключа из словаря при помощи метода .pop()
В Python есть такой метод, как .pop()
. Это очень полезный метод, который позволяет нам получить элемент словаря и сразу удалить его ключ.
Синтаксис метода .pop()
:
dictionary.pop(key, default_value)
Первый параметр — это ключ, который мы хотим удалить, а второй (необязательный) — это значение, которое должно быть возвращено, если данного ключа не существует.
Есть три результата, которые мы можем получить при использовании метода .pop()
:
- Искомый ключ есть в словаре. В этом случае значение ключа возвращается (выводится на консоль), а сам ключ удаляется из словаря.
- Ключ, который нам нужен, не существует, но мы предоставили значение по умолчанию. В этом случае возвращается указанное значение по умолчанию.
- Искомый ключ не существует и значение по умолчанию не указано. В этом случае выдается ошибка
KeyError
.
Давайте посмотрим, как мы можем на практике использовать метод .pop()
для удаления ключа из нашего словаря.
# Удаление ключа при помощи .pop() a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} a_dict.pop('John') print(a_dict) # Вывод: # {'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35}
Теперь давайте посмотрим, что произойдет при попытке удалить несуществующий ключ:
# Удаление несуществующего ключа при помощи .pop() a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} a_dict.pop('Jamie') print(a_dict) # Вывод: # KeyError: 'Jamie'
Если мы хотим иметь возможность безопасно удалить ключ из словаря (т.е. чтобы код не выдал ошибку), нам следует передать значение по умолчанию в наш метод .pop()
. Хорошим вариантом было бы вернуть None
, так как это позволит нам просто двигаться дальше. Теперь наш код будет выглядеть следующим образом:
# Удаление несуществующего ключа при помощи .pop() a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} a_dict.pop('Jamie', None) print(a_dict) # Вывод: # {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35}
Мы видим, что использование метода .pop()
позволяет нам безопасно удалить ключ из словаря в Python. Теперь давайте посмотрим, как можно удалить ключ из словаря при помощи del
.
Удаление ключа из словаря при помощи ключевого слова del
Python также позволяет использовать ключевое слово del
для удаления определенного ключа из словаря. Использование ключевого слова del
является менее безопасным подходом, так как нет способа просто указать значение по умолчанию, как это можно сделать при использовании метода .pop()
.
Итак, давайте посмотрим, как удалить ключ, применив del
:
# Удаление ключа при помощи del a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} del a_dict['John'] print(a_dict) # Вывод: # {'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35}
Если мы попытаемся удалить несуществующий ключ, Python выдаст ошибку KeyError
. Давайте посмотрим, как это будет выглядеть:
# Удаление несуществующего ключа при помощи del a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} del a_dict['Mike'] print(a_dict) # Вывод: # KeyError: 'Mike'
Чтобы не вызвать KeyError
, мы можем использовать оператор try-except
.
Подробнее про конструкцию try-except можно почитать в статье «Обрабатываем исключения в Python: try и except».
Наш код приобретет следующий вид:
# Безопасное удаление ключа из словаря при помощи try-except a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} try: del a_dict['Mike'] except KeyError: pass print(a_dict) # Вывод: # {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35}
Как видите, использовать метод .pop()
для безопасного удаления ключа из словаря намного проще, хотя при помощи del это сделать тоже можно.
Как удалить ключ из словаря при помощи генератора
Генераторы словаря в Python — это быстрые однострочники, которые позволяют легко создавать словари. Подробнее о том, что такое генератор словаря и как он работает, можно почитать в статье «Генераторы словарей в Python».
Здесь важно понимать, что мы создаем новый словарь. Поэтому это не самый экономичный метод удаления ключа. Но если вы уверены, что ключ существует, а словарь не слишком велик, можно воспользоваться и генератором.
Рассмотрим пример:
# Удаление ключа из словаря при помощи генератора a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} a_dict = {key:a_dict[key] for key in a_dict if key != 'John'} print(a_dict) # Вывод: # {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35}
Поскольку генератор словаря использует оператор if
, мы можем сказать, что это безопасный метод удаления ключа из словаря в Python.
Как удалить несколько ключей из словаря Python
Python позволяет легко удалить из словаря не только один определенный ключ, но и несколько. Самый безопасный способ сделать это — перебрать список ключей и использовать метод .pop()
.
Давайте посмотрим, как мы можем передать список различных ключей для удаления, включая несуществующие:
# Удаление нескольких ключей из словаря a_dict = {'John': 32, 'Mel': 31, 'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35} keys = ['John', 'Mary', 'Mel'] for key in keys: a_dict.pop(key, None) print(a_dict) # Вывод: # {'Nik': 33, 'Katie': 32, 'James': 29, 'Matt': 35}
Обратите внимание, что мы передаем None
в качестве default_value
, чтобы не вызвать KeyError
при попытке удалить несуществующий ключ.
Заключение
Теперь вы знаете, как безопасно удалить ключ из словаря в Python. Мы обсудили, как это можно сделать с помощью метода .pop()
, ключевого слова del
и использования генератора словаря. Наконец, мы разобрали, как безопасно удалить сразу несколько ключей из словаря в Python.
Если же вам было мало и вы хотите узнать больше о методе .pop()
в Python, ознакомьтесь с официальной документацией.
Надеемся данная статья была вам полезна! Успехов в написании кода!
Перевод статьи «Python: Remove Key from Dictionary (4 Different Ways)».