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

2 投票
2 回答
5250 浏览
提问于 2025-04-17 10:00

我在使用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)

撰写回答