2014-04-09 3 views
0

사전의 동적 변수와 결합 된 정적 값을 조회하려고합니다.조회 동적 사전 키

예를 들어, my_dict의 핵심은 다음과 같습니다 static_value1

내 현재 코드는 다음과 같습니다이 코드 string로,

dynamic_variable = 1 

string = "static_value" + str(dynamic_variable) 

my_dict[string] 

있지만 실제로 : 'static_value1'

내가 따옴표없이 필요 제대로 사전 키를 찾으려면.

어떻게하면됩니까? 그것이 의미가 있기를 바랍니다.

답변

0

문자열을 키로 사용하기 전에 문자열을 변수 이름으로 변경하려는 것 같습니다. 아마 이것? 이 보안 취약점을 나타 내기 때문에 당신이 당신 사용자 시스템에 임의의 코드를 실행할 수있는 능력을 준 이후 사용자가 제공 한 문자열로 eval를 사용하여 그의 대답에 언급 nneonneo으로

my_dict[eval(string)] 

은 일반적으로 나쁜 생각 .

+0

그게 내가 필요한 것입니다. 고맙습니다! – user3496076

+0

@ user3496076, 작동하는 경우 대답을 수락하십시오. – merlin2011

+0

. :) 10 분을 기다려야합니다. – user3496076

0

사용자는 globals 함수를 사용하여 "동적 변수"의 값을 얻을 수

my_dict[globals()[string]] 

변수 전역 (모듈)의 범위에 있다고 가정. (그렇지 않은 경우 locals()을 대신 사용하십시오).

eval을 사용하는 것보다 빠르고 안전합니다.

일반적으로

, 당신은 (예외가 __getattr__ 같은 기능을 작동 할 때) 파이썬에서 동적 변수를보고 피하려고한다. 대신 사전을 사용하여 이름에 대한 매핑을 키에 저장하는 것을 고려하십시오. 사전은 여러 가지 방법으로 비슷하게 명명 된 변수 모음보다 편리합니다.

+0

내 답변을 참조하여 답변을 참조하십시오. – merlin2011