Python

KeyError во вложенном словаре Python

В этом руководстве по Python мы увидим как обрабатывать KeyError во вложенном словаре Python. Есть несколько различных способов сделать это. Мы рассмотрим их один за другим на нескольких примерах.

Что такое KeyError во вложенном словаре Python?

Питон вложенный словарь имеет словарь в качестве значения для своих ключей и A KeyError возникает, когда вы пытаетесь получить доступ к несуществующему ключу словаря Python.

Это довольно часто встречается при работе с вложенные словари, где один или несколько уровней могут не содержать искомый ключ. В этом мы обсудим, как обращаться с этими словарями Python. Ключевые ошибки эффективно.

Давайте представим себе Python вложенный словарь который содержит информацию о различных голливудских актерах и их фильмах:

hollywood = {
    'Leonardo DiCaprio': {
        'movie': 'Inception',
        'year': 2010
    },
    'Tom Hanks': {
        'movie': 'Forrest Gump',
        'year': 1994
    }
}

print(hollywood['Johnny Depp']['movie'])

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

Traceback (most recent call last):
  File "C:\Users\USER\PycharmProjects\pythonProject\TS\main.py", line 12, in <module>
    print(hollywood['Johnny Depp']['movie'])
          ~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: 'Johnny Depp'
Как обрабатывать KeyError во вложенном python dict

Обработка KeyError во вложенном словаре Python

Мы можем обрабатывать эти исключения во вложенном словаре Python следующим образом:

  • С использованием попробовать-кроме блоки
  • Использование словаря получать() метод

что позволяет нам указать значение по умолчанию, если ключ не найден.

Способ 1. Обработка KeyError с помощью блока try-except во вложенном словаре Python.

Один из способов обработки этих исключений — использование попробовать-кроме блоки. Здесь Python «попытается» выполнить блок кода из пытаться блок, и если он столкнется с исключением, он «поймает» его и выполнит альтернативный блок кода из Python кроме блокировать.

давайте представим сценарий, в котором у нас есть вложенный словарь Python, представляющий набор элементов, доступных на платформе электронной коммерции, подобной Amazon. У каждого товара есть такие сведения, как «цена» и «запас», связанные с ним:

amazon_items = {
    'Echo Dot': {
        'price': 49.99,
        'stock': 1000
    },
    'Kindle Paperwhite': {
        'price': 129.99,
        'stock': 500
    }
}

try:
    print(amazon_items['iPhone 13']['price'])
except KeyError:
    print('Item not found in the store.')

Теперь, если клиент хочет узнать цену «iPhone 13», мы попытаемся получить доступ к цене. Однако «iPhone 13» не существует в словаре, и Python вызовет KeyError.

Мы можем обработать это исключение, используя Python попробовать-кроме блокировать.

Вывод: Однако блок exclude перехватывает это исключение и вместо завершения программы Python печатает «Элемент не найден в магазине». Таким образом, пользователь получает осмысленное сообщение, а не ошибку.

Item not found in the store.
Как обрабатывать KeyError во вложенном python dict.  используя попытку-кроме

Примечание. Если мы не хотим, чтобы какое-либо сообщение печаталось, мы можем использовать Пайтон ключевое слово в кроме блока просто пройти, если произойдет какое-либо исключение.

Таким образом, мы используем попробовать-кроме блочный метод, чтобы просто обрабатывать KeyError в вложенный словарь Python.

Способ 2: обработка KeyError с помощью метода get() во вложенном словаре Python

Другой способ справиться с KeyError с помощью словаря Python получать() метод. Этот метод позволяет нам предоставить значение по умолчанию, если ключ не найден.

давайте рассмотрим Python вложенный словарь который содержит информацию о различных известных достопримечательностях Нью-Йорка и их деталях, и, допустим, мы хотим узнать, когда был построен «Центральный парк».

Однако, поскольку слова «Центральный парк» в словаре нет, Python вызовет KeyError. Мы можем справиться с этим KeyError с помощью получать() метод.

Питон получать() метод пытается получить значение для указанного ключа, и если он не может найти ключ, он возвращает значение по умолчанию (если указано) или None.

new_york_landmarks = {
    'Statue of Liberty': {
        'location': 'Liberty Island',
        'year_built': 1886
    },
    'Empire State Building': {
        'location': 'Midtown Manhattan',
        'year_built': 1931
    }
}

landmark_info = new_york_landmarks.get('Central Park', {})
year_built = landmark_info.get('year_built', 'Year not found.')
print(year_built)

Выход: В этом случае первый получать() метод пытается получить словарь Python для «Центрального парка». Если «Центральный парк» не найден, возвращается пустой словарь.

Второй получать() Затем метод пытается получить «year_built» из этого словаря. Если ‘year_built’ не является ключом в словаре (которого не будет, потому что Python пустой словарь был возвращен).

Year not found.
Как обрабатывать KeyError во вложенном python dict.  используя получить()

Таким образом, мы можем использовать получать() метод в вложенный словарь Python справиться с KeyError.

Заключение:

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

Вы также можете прочитать:


Ссылка на источник

Похожие статьи

Кнопка «Наверх»