2014-09-02 63 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"]