Нулевое объединение на элементе 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')
что бы воплотить то, что вы хотели бы сделать.