2014-09-02 83 views
0

我有一个值分配给一个变量,我通过使用循环生成变量名。我想分配生成变量的实际值。如果我遵循下面的方法,它将分配字符串而不是值。动态生成变量的访问值

full_C3_sucess = 10 
comp_Nonc3 = 100 
for stage in ["C3", "Nonc3"]: 
    for dtype in ["full", "comp"]: 
     deployment = {} 
     format = dtype + "_" + stage 
     deployment['deployAttempted'] = format + "_sucess" 

如果我打印deployment['deployAttempted'],它具有串full_c3_sucess,而不是它原来的价值。有人能帮助我吗?

+5

请勿使用动态变量;用字典代替; 'items ['full_C3_sucess']'比处理'locals()'或'globals()'更容易处理。 – 2014-09-02 11:29:10

回答

0

,你可以:

  • 使用evalprint eval(deployment['deployAttempted'])但它是不是一个好的做法。
  • 使用字典
  • 使用locals()globals()

你可以找到关于SO similarquestions。通常情况下,类似的Martijn Pieters的评论说,字典是更好的选择:

mydict['full_c3_sucess'] = 10 
... 
print mydict[deployment['deployAttempted']] 
-1

您可以使用globals()locals()通过名称来访问全局和局部变量:locals()[format + "_sucess"]