2012-04-17 57 views
1

,我有一個列表需要根據變量的內容進行訪問。在我的程序中將字符串轉換爲變量[python]

string = [ 
     [arg1, arg2, arg3], 
     [arg1, arg2, arg3] 
     ] 

string2 = [ 
      [arg1, arg2, arg3], 
      [arg1, arg2, arg3] 
      ] 

但是,這將始終是一個字符串。

Class.variable = 'string' # this can be either 'string' or 'string2' 

的代碼,我訪問列表的列表是

newVariable = Class.variable[seperateVariable][0] 

然而,這會導致錯誤

IndexError: string index out of range 

我已經想通了這種情況的原因是因爲類.variable是一個字符串,實際上並不是一個變量。

什麼是最好的縮放方式來解決這個問題?

回答

1

我想你會用字典更好,如果Class.variable真正需要的是一個字符串(例如,因爲它是用戶輸入):

strings = { "string": [[arg1, arg2, arg3],[arg1, arg2, arg3]], 
      "string2": [[arg1, arg2, arg3],[arg1, arg2, arg3]] } 

現在您可以訪問strings[separateVariable][0]

(在你的例子中,你試圖訪問"string"[separateVariable][0],其中separateVariable的值不夠高)。

+0

我明白了。我甚至沒有考慮過字典。謝謝! – 2012-04-17 09:01:20

0

將字符串分配給類變量時刪除引號。同時,請從名稱衝突避免與隱式類型或模塊

Class.variable = string1 

當你引用變量,它實際上被視爲一個字符串,而不是一個變量。所以變量的實際內容永遠不會分配給您的變量Class

+0

我將無法做到這一點。該變量被分配到其他地方,我會需要它是一個字符串。 – 2012-04-17 08:57:48

0

您可以根據其中「字符串1」的定義,所以你會做使用內建的全局變量()或當地人():

Class.variable = locals()['string']