1

在我的程序中,我有一个需要根据变量内容访问的列表列表。

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

我已经弄清楚这是因为 Class.variable 是一个字符串,而不是一个真正的变量。

解决此问题的最佳扩展方式是什么?

4

3 回答 3

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)。

于 2012-04-17T08:58:38.827 回答
0

将字符串分配给您的类变量时删除引号。另外请避免与隐式类型或模块的名称冲突

Class.variable = string1

当您引用变量时,它实际上被视为字符串而不是变量。因此,变量的实际内容永远不会分配给您的Class变量。

于 2012-04-17T08:55:31.613 回答
0

您可以使用内置的 globals() 或 locals() 取决于 'string1' 的定义位置,因此您可以这样做:

Class.variable = locals()['string']
于 2012-04-17T09:01:50.973 回答