Для Python 3.x

нтересно, есть ли способ заполнить словарь так, чтобы у вас было несколько ключей, сопоставляющих одно и то же значение, которое менее многословно, чем сказать:

d = {1:'yes', 2:'yes', 3:'yes', 4:'no'}

Я думаю что-то вроде:

d = {*(1,2,3):'yes', 4:'no'}

что, очевидно, является синтаксической ошибкой.

Есть ли достаточно простой способ сделать это без СЛИШКОМ большого запутывания? (Я не играю в гольф в коде, но мне также не нужно писать по существу одно и то же снова и снова. Однако, любые ответы, связанные с кодовым гольфом, также приветствуются, поскольку кодовый гольф - это круто =]).

редактировать:

Я, наверное, выбрал плохой пример. Вот что я пытаюсь сделать:

d = {*('READY', 95): 'GPLR2_95', 'CHARGING': 'GPLR3_99', 'PROTECTION': 'GPLR3_100', 'CONNECTED': 'GPLR3_101', 'ERROR':'GPLR3_102'}

То, что я ожидал бы, чтобы это расширилось, является:

d = {'READY':'GPLR2_95', 95: 'GPLR2_95', ...}

Edit-> Edit:

Я знаю, что это глупо и совершенно не нужно, но моя цель - сделать это в одной строке. Это, очевидно, не должно ограничивать какие-либо ответы и писать код только потому, что он умещается в 1 строку, глупо. Но я пишу константу уровня модуля, которая была бы хороша, если бы это был один лайнер.

Ответы на вопрос(7)

Ваш ответ на вопрос