2012-04-17 62 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']