Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to eval a string containing an equal symbol?

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?

like image 252
NicoCati Avatar asked Nov 25 '25 11:11

NicoCati


2 Answers

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)
like image 156
Daniel Roseman Avatar answered Nov 28 '25 15:11

Daniel Roseman


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).

like image 37
Mischa Arefiev Avatar answered Nov 28 '25 17:11

Mischa Arefiev



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!