2013-06-03 62 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] 
相关问题