如何评估包含等号的字符串?
我在使用eval
这个函数时遇到了一些问题。我有一个列表,比如说,
list1 = [('a',1), ('b',2), ('c',3)]
我想把元组里的每个值都赋给第一个元素:
for el in list1 :
eval(el[0]) = el[1]
我该怎么做呢?
2 个回答
4
你不需要用 eval
来实现这个。
你可以直接通过调用 vars
这个内置函数来访问本地环境。下面是一个示例互动会话:
>>> list1 = [("a", 4), ("b", 8)]
>>> vars().update(dict(list1))
>>> a
4
>>> b
8
在这里,vars()
返回一个包含本地变量的字典。因为它返回的是唯一实例的指针(而不是副本),所以你可以直接在这个字典上进行修改(使用 .update
方法)。
12
你可以这样做:
exec('%s = %s' % el)
但是别这样做。真的,别这样做。你不需要动态的局部变量,你需要的是一个字典:
my_dict = dict(list1)