Как вычислить() строку в словаре Python2.7

#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 .