Нулевое объединение на элементе dict в python

Итак, я знаю, что в Python я могу сделать это:

variable_name = other_variable or 'something else'

... и что это назначит 'something else' в variable_name если other_variable является ложным, и в противном случае назначить other_variable значение для variable,

Могу ли я сделать хорошую лаконичную похожую вещь с помощью dict:

variable_name = my_dict['keyname'] or 'something else'

... или несуществующее имя ключа будет всегда вызывать ошибку, вызывать ее сбой?

2 ответа

Решение

Ты увидишь KeyError если 'keyname' не существует в вашем словаре. Вместо этого вы можете использовать:

variable_name = my_dict.get('keyname', False) or 'something else'

С этой логикой 'something else' назначается, когда либо 'keyname' не существует или my_dict['keyname'] это Фальси

Другой вариант - использовать defaultdict:

from collections import defaultdict

my_dict = defaultdict(lambda: 'something else')

Сейчас же my_dict['keyname'] оценивает 'something else'.

Вы можете получить доступ к диктовке двумя способами, так как вы делаете это с my_dict['keyname'] но вы также можете использовать my_dict.get('keyname'), С помощью get имеет преимущество, которое вы можете предоставить по умолчанию. В вашем случае я бы предложил что-то вроде variable_name = my_dict.get('key_name', 'something else') что бы воплотить то, что вы хотели бы сделать.

Другие вопросы по тегам