eval
函数存在一些问题。我有一个列表,例如,
list1 = [('a',1), ('b',2), ('c',3)]
我想将元组的每个值赋给第一个元素:
for el in list1 :
eval(el[0]) = el[1]
我该怎么做?
答案 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
)。