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

「string1」が定義されている場所に応じて、組み込みの globals() または locals() を使用できるので、次のようにします。

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