2014-09-28 5 views
1

파이썬에서 문자열 목록으로 기존 변수를 어떻게 찾을 수 있습니까?Python에서 문자열 목록으로 기존 변수를 찾는 방법은 무엇입니까?

letters = ["C", "A", "M", "P"] 

와 같은 기존 변수의 집합 :

: 나는 다음과 같은 명령을 찾고

C = pygame.image.load("resources/menu icons/imgC.png") 
A = pygame.image.load("resources/menu icons/imgA.png") 
M = pygame.image.load("resources/menu icons/imgM.png") 
P = pygame.image.load("resources/menu icons/imgP.png") 

나는 같은 문자열 목록을

surface.blit(letters[0]) 

화면에 이미지를 표시하려면 다음을 입력하십시오. 아무도 도와 줄 수 있습니까?

답변

1

사이버의 방법은 더 조직 네임 스페이스를 유지하는 장점이 있지만, 약 globals을 아는 것도 좋다 다음과 같이 할 수 있습니다.

surface.blit(globals()[letters[0]]) 

(C, A, M, P은 전역 이름 공간에 정의됩니다. 지역 변수 인 경우 globals() 대신 vars()을 사용할 수 있습니다.

+0

빠른 응답을 주셔서 감사합니다. –

+0

추적 (가장 최근의 마지막 통화) : 파일 "main.py", 줄 109, main() 파일 "main.py"파일의 "global.py()"를 사용하여 다음과 같은 오류 메시지가 표시됩니다. ", 줄 64, 주 menuIcons.add ((menu.icon ("CAMPAIGN "))) 파일"/media/PROGRAMMING/Files/Reality/menu.py ", 줄 43, __init__ self.image. KeyError : 'C' –

+0

나는 좀 더 구체적 이어야만했습니다. 내 변수는 내 main.py에 있고 menu.py에 내장 된 클래스에서 이미지를 스프라이트 self.image에 블릿하고 싶습니다. 원하는 경우 코드 전체 사본을 업로드 할 수 있습니다. –

2

나는 아마도 사전을 갈 것입니다.

d = { 
    'C': pygame.image.load("resources/menu icons/imgC.png"), 
    'A': pygame.image.load("resources/menu icons/imgA.png"), 
    'M': pygame.image.load("resources/menu icons/imgM.png"), 
    'P': pygame.image.load("resources/menu icons/imgP.png") 
    } 

은 그럼 당신은 그런 식으로까지 물건을 볼 수

d['A'] 

또는

d[letters[1]] 
+0

빠른 응답을 주셔서 감사합니다. 불행히도이 예제에서는 list()를 사용하여 단일 문자열에서 문자열 목록을 만들 때 사전을 사용할 수 없습니다. –