假設我有一個包含'RED','BLUE'和'GREEN'等值的選擇框,並且我想使用這些字符串作爲常量的引用的事情,但含元組,像這樣:如何在Python中將字符串轉換爲常量元組
RED = ('x234114','z8765667')
我要找會是這個樣子在我腦海裏的眼睛:)
globals_lookup('RED')
這可能是一個明顯的代碼,但它不是來找我。
假設我有一個包含'RED','BLUE'和'GREEN'等值的選擇框,並且我想使用這些字符串作爲常量的引用的事情,但含元組,像這樣:如何在Python中將字符串轉換爲常量元組
RED = ('x234114','z8765667')
我要找會是這個樣子在我腦海裏的眼睛:)
globals_lookup('RED')
這可能是一個明顯的代碼,但它不是來找我。
一旦你定義了變量的元組,你就可以訪問它的本地人。
>>> RED = ('x234114','z8765667')
>>> locals()["RED"]
('x234114', 'z8765667')
但是應該使用字典
>>> select_data = {"RED" :('x234114','z8765667'),"BLUE":('x934587','z943657')}
>>> select_data["RED"]
('x234114','z8765667')
使用Python字典:
lookup = {
'RED' : ('x234114','z8765667')
}
用法:
color = "RED"
tup = lookup[color]
assert tup == ('x234114','z8765667')
使用eval:
RED = ('x234114','z8765667')
def globals_lookup(ident):
return eval(ident)
t=globals_lookup('RED')
但更好的方法是使用一個哈希表:
colors={'RED':('x234114','z8765667')}
t=colors['RED']
不需要'eval()',只需''返回全局變量()[ident]' – martineau
RED = ('x234114','z8765667')
color_table = {'RED': RED, 'GREEN': GREEN, 'BLUE': BLUE}
def globals_lookup(color):
return color_table[color]
做正確的方式有一個[全局()](http://docs.python.org/2/library /functions.html#globals)函數返回當前全局命名空間的字典...這是你想要的嗎? – SethMMorton
您是否可以不將常量存儲在全局字典中? – Ben
我猜我自從我的評論和前兩個答案都回答了不同的問題,你需要澄清你想要什麼。 – SethMMorton