2014-04-09 60 views
0

我想查找靜態值與字典中的動態變量相結合。查找動態字典鍵

例如,在my_dict的關鍵是:static_value1

我當前的代碼是:

dynamic_variable = 1 

string = "static_value" + str(dynamic_variable) 

my_dict[string] 

但是,與此代碼string實際上是:'static_value1'

我需要它不帶引號正確查找字典鍵。

我該怎麼做?希望它是有道理的。

回答

0

這聽起來像你試圖將字符串變成一個變量名稱,然後再使用它作爲一個鍵。也許這個?

my_dict[eval(string)] 

正如他在答覆中提到nneonneo,使用eval與用戶提供的字符串通常是一個壞主意,因爲它代表着一個安全漏洞,因爲你剛纔給你的用戶在系統上執行任意代碼的能力。

+0

這正是我所需要的。謝謝! – user3496076

+0

@ user3496076,如果它適合您,請接受答案。 – merlin2011

+0

當然。 :)必須等待10分鐘。 – user3496076

0

您可以通過使用globals功能得到一個「動態變量」的值:

my_dict[globals()[string]] 

假設變量是全局(模塊)的範圍。 (如果不是,請改爲使用locals())。

這比使用eval更快,更安全。


在一般情況下,你應該儘量避免在Python動態尋找變量了(除了與功能工作時就像__getattr__)。相反,考慮使用字典來存儲名稱與鍵的映射。字典比以多種方式收集類似命名的變量更方便。

+0

查看我的更新以參考您的答案。 – merlin2011