Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)

В этом уроке вы узнаете, как проверить, существует ли ключ в словаре Python. Вы также научитесь проверять, существует ли значение в словаре. Мы рассмотрим использование оператора in, метода .get(), функции has_key() и методов .keys() и .values().

Знание работы со словарями Python — важный навык, особенно полезный при работе с веб-API, которые возвращают данные в формате JSON.

Когда вы пытаетесь обратиться к словарю по индексу, а ключ отсутствует, выбрасывается исключение KeyError. Это может вызвать серьёзные проблемы в программе, если не обработать такие ошибки. Поэтому более безопасный подход — проверять наличие ключа в словаре перед попыткой его использования.

Давайте начнём!

Оглавление:


Что такое словарь в Python?

Словари в Python — одна из основных встроенных структур данных. Они состоят из пар ключ:значение, что делает поиск значений быстрым, если вы знаете соответствующий ключ. Уникальной особенностью словарей является то, что ключи должны быть уникальными, а значения могут повторяться.

Пример создания словаря в Python:

ages = {
    'Matt': 30,
    'Katie': 29,
    'Nik': 31,
    'Jack': 43,
    'Alison': 32,
    'Kevin': 38
}

Для доступа к значению по ключу часто используют квадратные скобки. Однако этот метод не всегда безопасен. Рассмотрим почему.


Проблемы при индексации словаря Python

Доступ к значению по ключу работает только в случае, если ключ существует. Например:

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
print(ages['Nik'])
# Результат: 31

Но если ключ отсутствует:

print(ages['Jill'])
# KeyError: 'Jill'

Если ошибка KeyError не обработана, это приведёт к завершению программы. Чтобы избежать этого, необходимо сначала убедиться, что ключ существует. Далее мы рассмотрим несколько подходов для проверки наличия ключа.


Проверка существования ключа: метод .keys()

Метод .keys() возвращает объект, содержащий все ключи словаря:

print(ages.keys())
# Результат: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])

Пример использования для проверки ключа:

some_key = 'James'
if some_key in ages.keys():
    print('Ключ существует')
else:
    print('Ключ не существует')
# Результат: Ключ не существует

Проверка существования ключа: оператор in

Метод .keys() можно опустить. Оператор in напрямую проверяет наличие ключа:

some_key = 'Nik'
if some_key in ages:
    print('Ключ существует')
else:
    print('Ключ не существует')
# Результат: Ключ существует

Этот способ проще и делает код более читаемым.


Использование метода .get() для проверки ключей

Метод .get() возвращает значение для ключа, если он существует, или None, если его нет. Это позволяет избежать ошибок KeyError:

print(ages.get('Jack'))
print(ages.get('Jill'))
# Результат:
# 43
# None

Вы можете задать значение по умолчанию, возвращаемое, если ключ отсутствует:

print(ages.get('Jill', "Ключ не существует"))
# Результат: Ключ не существует

Проверка существования значения с помощью .values()

Метод .values() возвращает объект, содержащий все значения словаря:

print(ages.values())
# Результат: dict_values([30, 29, 31, 43, 32, 38])

Пример проверки наличия значения:

some_age = 27
if some_age in ages.values():
    print('Значение существует')
else:
    print('Значение не существует')
# Результат: Значение не существует

Если нужно получить все ключи для определённого значения, используйте списковое включение:

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Jill': 43, 'Alison': 32, 'Kevin': 38}
value_43 = [key for key, value in ages.items() if value == 43]
print(value_43)
# Результат: ['Jack', 'Jill']

Заключение

В этом уроке вы узнали, как проверять существование ключей и значений в словарях Python. Мы рассмотрели методы .keys(), .get(), .values() и оператор in. Эти инструменты помогают избегать ошибок и упрощают работу с данными.

Дополнительно изучить словари можно в официальной документации Python.

Last updated