在我的程序中,我有一个需要根据变量内容访问的列表列表。
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是一个字符串而不是一个变量。
解决这个问题的最佳缩放方式是什么?
答案 0 :(得分: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
}值足够高而失败。
答案 1 :(得分:0)
将字符串分配给类变量时删除引号。另请注意与隐式类型或模块的名称冲突
Class.variable = string1
当您引用变量时,它实际上被视为字符串而不是变量。因此,变量的实际内容永远不会分配给您的Class
变量。
答案 2 :(得分:0)
你可以使用builtins globals()或locals(),具体取决于'string1'的定义,你可以这样做:
Class.variable = locals()['string']