How to eval a string containing an equal symbol?

5.2k views Asked by At

I have some issues with the eval function. I have a list like, for example,

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

and I would like to assign each value of a tuple to the first element:

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

How can I do this?

2

There are 2 answers

3
Daniel Roseman On

You could do this:

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

But don't. Really, don't. You don't need dynamic local variables, you need a dictionary:

my_dict = dict(list1)
2
Mischa Arefiev On

You don't need eval for that.

You can access local environment directly by calling the vars builtin. Here's an example interactive session:

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

Here vars() returns the dict with local variable bindings. Since it returns a pointer to the only instance (not a copy), you can modify it in place (.update).