2

我的功能有一些问题eval。我有一个列表,例如,

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

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

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

我怎样才能做到这一点?

4

2 回答 2

12

可以这样做:

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

但是不要。真的,不要。你不需要动态局部变量,你需要一个字典:

my_dict = dict(list1)
于 2012-01-11T11:20:50.047 回答
3

你不需要eval那个。

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

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

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

于 2012-01-11T13:36:05.580 回答