我想查找靜態值與字典中的動態變量相結合。查找動態字典鍵
例如,在my_dict
的關鍵是:static_value1
我當前的代碼是:
dynamic_variable = 1
string = "static_value" + str(dynamic_variable)
my_dict[string]
但是,與此代碼string
實際上是:'static_value1'
我需要它不帶引號正確查找字典鍵。
我該怎麼做?希望它是有道理的。
我想查找靜態值與字典中的動態變量相結合。查找動態字典鍵
例如,在my_dict
的關鍵是:static_value1
我當前的代碼是:
dynamic_variable = 1
string = "static_value" + str(dynamic_variable)
my_dict[string]
但是,與此代碼string
實際上是:'static_value1'
我需要它不帶引號正確查找字典鍵。
我該怎麼做?希望它是有道理的。
這聽起來像你試圖將字符串變成一個變量名稱,然後再使用它作爲一個鍵。也許這個?
my_dict[eval(string)]
正如他在答覆中提到nneonneo,使用eval
與用戶提供的字符串通常是一個壞主意,因爲它代表着一個安全漏洞,因爲你剛纔給你的用戶在系統上執行任意代碼的能力。
您可以通過使用globals
功能得到一個「動態變量」的值:
my_dict[globals()[string]]
假設變量是全局(模塊)的範圍。 (如果不是,請改爲使用locals()
)。
這比使用eval
更快,更安全。
在一般情況下,你應該儘量避免在Python動態尋找變量了(除了與功能工作時就像__getattr__
)。相反,考慮使用字典來存儲名稱與鍵的映射。字典比以多種方式收集類似命名的變量更方便。
查看我的更新以參考您的答案。 – merlin2011
這正是我所需要的。謝謝! – user3496076
@ user3496076,如果它適合您,請接受答案。 – merlin2011
當然。 :)必須等待10分鐘。 – user3496076