2013-06-03 69 views
2

假設我有一個包含'RED','BLUE'和'GREEN'等值的選擇框,並且我想使用這些字符串作爲常量的引用的事情,但含元組,像這樣:如何在Python中將字符串轉換爲常量元組

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

使用Python字典:

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

用法:

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

使用eval:

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

但更好的方法是使用一個哈希表:

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

不需要'eval()',只需''返回全局變量()[ident]' – martineau

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

def globals_lookup(color): 
    return color_table[color] 
相關問題