Обработка отсутствующих ключей в словарях Python

| | | | | | | | | | | | | | | | | | | |

# Код Python для демонстрации словаря и
# отсутствует ошибка значения


# инициализация словаря

d = { `a` : 1 , ` b` : 2 }


# попытка отобразить значение отсутствующего ключа

print ( "Значение, связанное с` c`: " )

print (d [ ` c` ])

Ошибка:

Traceback (последний последний вызов): файл "46a9aac96614587f5b794e451a8f4f5f.py", строка 9, в печати (d [`c`]) KeyError:` c` 

In В приведенном выше примере ни один ключ с именем «с» в словаре не выдал ошибки времени выполнения. Чтобы избежать таких условий и предупредить пользователя об отсутствии определенного ключа или отправить сообщение по умолчанию в это место, существует несколько способов обработки отсутствующих ключей.

Способ 1. Использование get()

Метод get (key, def_val) полезен, когда нам нужно проверить ключ. Если ключ присутствует, выводится значение, связанное с ключом, в противном случае возвращается значение def_value, переданное в аргументах.

Способ 2: Использование setdefault()

setdefault (key, def_value) работает как get(), но разница в том, что каждый раз, когда key отсутствует, создается новый ключ с def_value, связанным с key передается в аргументы.

Чтобы реализовать описанные выше функции, нажмите здесь Defaultdict " — это контейнер, определенный в модуль с именем "коллекция ". Он принимает функцию (фабрику по умолчанию) в качестве аргумента . По умолчанию заводская установка по умолчанию имеет значение "int", что равно 0 . Если ключ отсутствует — defaultdict, возвращает и по умолчанию отображается по умолчанию . Он имеет приоритет над get() или setdefault().

# Код Python для демонстрации defaultdict


# import " коллекции " для defaultdict

import collections


# объявление по умолчанию
# устанавливает значение по умолчанию "Ключ не найден" для отсутствующих ключей

defd = коллекции. defaultdict ( lambda : `Ключ не найден` )


# инициализация значений

defd [ `a` ] = 1


# инициализация значений

defd [ `b` ] = 2


# значение для печати

print ( "Значение, связанное с` a`: " , end = "")

print (defd [ `a` ])


# вывести значение, связанное с ' с '

print ( "Значение, связанное с ` c` is: " , end = " ")

print ( defd [ `c` ])

Вывод:

Значение, связанное с `a`: 1 Значение, связанное с `c`: Ключ не найден 

Эта статья любезно предоставлена ​​ Манджит Сингх . Если вы представляете Python.Engineering и хотели бы внести свой вклад, вы также можете написать статью, используя вклад.python.engineering или опубликовав статью. внести свой вклад @ python.engineering. См. мою статью на домашней странице Python.Engineering и помогите другим специалистам.

Оставляйте комментарии, если вы обнаружите что-то не так или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.