#python #dictionary #pygame #eval
#python #словарь #pygame #вычисление
Вопрос:
У меня есть словарь:
key = {'K_z':'K_w'}
Я хочу получить K_w в качестве имени значения вместо строки, я слышал, что функция eval() может преобразовывать строки в имена значений.
Но когда я набираю:
print(eval(key['K_z']))
Я получаю ‘K_z’ вместо значения K_w.
Вы можете мне помочь?
Если это поможет, я использую его для pygame, чтобы позволить игроку изменять привязки клавиш, особенно с различиями AZERTY и QWERTY…
Комментарии:
1. Что вы подразумеваете под «именем значения»? Это звучит как очень неправильное использование
eval()
.2. Вы имеете в виду
K_w=something; key['K_z']==something
?3. @dawg да, поскольку функции библиотек pygame распознают K_w, но не ‘K_w’
4. Я думаю, вы не хотите
eval
, но вы просто действительно хотите разрешитьK_w
(или любое другое имяkey["K_z"]
указывает) изpygame.key
модуля. Предполагая, что вы это сделалиimport pygame.key
, выgetattr(pygame.key, key["K_z"])
получаете то, что вам нужно?5. @Rhymoid Нет, консоль говорит мне: объект ‘module’ не имеет атрибута ‘K_w’
Ответ №1:
Это то, что вы ищете?
key = {'K_z':'K_w'}
print(key['K_z'])
K_w
Я не думаю, что eval()
это поможет, поскольку он оценивает аргументы. В pygame вы могли бы использовать if key[pygame.K_w] or key[pygame.K_z]
do something .