如何评估包含相等符号的字符串?

时间:2012-01-11 11:17:56

标签: python string eval equals-operator

eval函数存在一些问题。我有一个列表,例如,

list1 = [('a',1), ('b',2), ('c',3)]

我想将元组的每个值赋给第一个元素:

for el in list1 :
    eval(el[0]) = el[1]

我该怎么做?

2 个答案:

答案 0 :(得分:12)

可以这样做:

exec('%s = %s' % el)

但不要。真的,不要。您不需要动态局部变量,需要字典:

my_dict = dict(list1)

答案 1 :(得分:2)

您不需要eval

您可以通过调用vars内置来直接访问本地环境。这是一个交互式会话示例:

>>> list1 = [("a", 4), ("b", 8)]
>>> vars().update(dict(list1))
>>> a
4
>>> b
8

这里vars()返回带有局部变量绑定的dict。由于它返回指向唯一实例(不是副本)的指针,因此您可以就地修改它(.update)。