我试图在字典中查找与动态变量结合的静态值。
例如,my_dict
中的密钥为:static_value1
我目前的代码是:
dynamic_variable = 1
string = "static_value" + str(dynamic_variable)
my_dict[string]
但是,使用此代码string
实际上是:'static_value1'
我需要它而不用引号来正确查找字典键。
我怎么能这样做?希望它有意义。
答案 0 :(得分:0)
听起来你正在尝试将字符串更改为变量名,然后再将其用作键。也许这个?
my_dict[eval(string)]
正如nneonneo在他的回答中提到的,将eval
与用户提供的字符串一起使用通常是一个坏主意,因为它代表了一个安全漏洞,因为您刚刚让您的用户能够在您的系统上执行任意代码
答案 1 :(得分:0)
您可以获得动态变量"的价值。使用globals
函数:
my_dict[globals()[string]]
假设变量在全局(模块)范围内。 (如果不是,请改用locals()
)。
这比使用eval
更快,更安全。
通常,您应该尽量避免在Python中动态查找变量(例外情况是使用__getattr__
等函数时)。相反,请考虑使用字典来存储名称到键的映射。字典比几个类似命名的变量集合更方便。