2013-06-03 3 views
2

'RED', 'BLUE', 'GREEN'과 같은 값을 가진 선택 상자가 있다고 가정하고 그 문자열을 같은 문자열에 대한 참조로 사용하고 싶습니다. 일이 있지만, 포함 그래서 튜플 :문자열을 파이썬에서 상수 튜플로 변환하는 방법

RED = ('x234114','z8765667') 

내 마음의 눈 :

globals_lookup('RED') 

이것은 명백한 하나가 될 수에서 다음과 같이 보일 것입니다 찾고 있어요 코드,하지만 그렇지 않아 내게오고.

+1

을 사용하는 것입니다 할 수있는 올바른 방법은 [전역()] (http://docs.python.org/2/library있다 /functions.html#globals) 현재 글로벌 네임 스페이스의 사전을 반환하는 함수입니다. 원하는 것은 무엇입니까? – SethMMorton

+0

어쨌든 전역에있는 사전에 상수를 저장할 수 있습니까? – Ben

+0

내 의견과 처음 두 답변이 모두 당신이 원하는 것을 명확히하기 위해 필요한 다른 질문에 대답 한 이후로 추측하고 있습니다. – SethMMorton

답변

2

튜플을 사용하여 변수를 정의한 후에는 로컬 사용자에게 액세스 할 수 있습니다.

>>> RED = ('x234114','z8765667') 
>>> locals()["RED"] 
('x234114', 'z8765667') 

하지만 사전

>>> select_data = {"RED" :('x234114','z8765667'),"BLUE":('x934587','z943657')} 
>>> select_data["RED"] 

('x234114','z8765667') 
1

파이썬 사전을 사용

lookup = { 
    'RED' : ('x234114','z8765667') 
} 

사용 :

color = "RED" 
tup = lookup[color] 
assert tup == ('x234114','z8765667') 
2

하는 사용 평가 :

RED = ('x234114','z8765667') 
def globals_lookup(ident): 
    return eval(ident)  
t=globals_lookup('RED') 

그러나 더 좋은 방법은 해시 테이블을 사용하는 것입니다 :

colors={'RED':('x234114','z8765667')} 
t=colors['RED'] 
+1

'eval()'이 필요없고,'return globals() [ident]' – martineau

1
RED = ('x234114','z8765667') 
color_table = {'RED': RED, 'GREEN': GREEN, 'BLUE': BLUE} 

def globals_lookup(color): 
    return color_table[color] 
관련 문제