查找动态字典键

时间:2014-04-09 04:40:09

标签: python

我试图在字典中查找与动态变量结合的静态值。

例如,my_dict中的密钥为:static_value1

我目前的代码是:

dynamic_variable = 1

string = "static_value" + str(dynamic_variable)

my_dict[string]

但是,使用此代码string实际上是:'static_value1'

我需要它而不用引号来正确查找字典键。

我怎么能这样做?希望它有意义。

2 个答案:

答案 0 :(得分:0)

听起来你正在尝试将字符串更改为变量名,然后再将其用作键。也许这个?

my_dict[eval(string)]

正如nneonneo在他的回答中提到的,将eval与用户提供的字符串一起使用通常是一个坏主意,因为它代表了一个安全漏洞,因为您刚刚让您的用户能够在您的系统上执行任意代码

答案 1 :(得分:0)

您可以获得动态变量"的价值。使用globals函数:

my_dict[globals()[string]]

假设变量在全局(模块)范围内。 (如果不是,请改用locals())。

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


通常,您应该尽量避免在Python中动态查找变量(例外情况是使用__getattr__等函数时)。相反,请考虑使用字典来存储名称到键的映射。字典比几个类似命名的变量集合更方便。