Python "or" оператор не работает со словарем

Код:

test = {
    "2": 1
}

c = test["1"] or test["2"]
print(c)

Ошибка:

c = test["1"] or test["2"]
KeyError: '1'

Process finished with exit code 1

Что тут не так?


Ответы (1 шт):

Автор решения: Roman Konoval

То что вы хотите делается так:

c = test.get('1', test.get('2'))

Второй параметр в get будет возвращен, если ключ переданный в первом параметре не существует в словаре.

Или как вариант:

c = test.get('1') or test['2']

get в отличии от [] не бросает исключения, а вернет None, если ключа нет (действует аналогично test.get('1', None), т.е. значение по умолчанию будет None).

У вас же исключение случается до того как or может что-то сделать.

→ Ссылка