2012-04-17 1 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]에 액세스 할 수 있습니다.

(예 : separateVariable 값이 충분하지 않은 경우 "string"[separateVariable][0]에 액세스하려고했습니다.)

+0

알겠습니다. 나는 심지어 사전을 고려하지 않았다. 감사! –

0

문자열을 클래스 변수에 할당 할 때 견적을 제거하십시오. 또한 암시 유형 또는 모듈

Class.variable = string1 

당신이 변수를 인용하는과 이름이 충돌 삼가하십시오, 그 실제로 문자열이 아닌 변수로 간주. 따라서 변수의 실제 내용은 변수 Class에 할당되지 않습니다.

+0

내가 그렇게 할 수 없습니다. 그 변수는 다른 곳에 할당되고 문자열이어야합니다. –

0

당신은 당신이 할 것, 그래서 '문자열 1이'정의 위치에 따라 내장 매크로의 전역() 또는 지역 주민()를 사용할 수 있습니다

Class.variable = locals()['string'] 
관련 문제