У меня есть некоторые проблемы с функцией eval.У меня есть список, например,
eval
list1 = [('a',1), ('b',2), ('c',3)]
, и я хотел бы присвоить каждому значению кортежа первый элемент:
for el in list1 : eval(el[0]) = el[1]
Как я могу это сделать?
Вы могли бы сделать это:
exec('%s = %s' % el)
Но не надо. На самом деле нет. Вам не нужны динамические локальные переменные, вам нужен словарь:
my_dict = dict(list1)
Для этого вам не нужно eval.
Вы можете получить доступ к локальной среде напрямую, вызвав встроенную функцию vars.Вот пример интерактивного сеанса:
vars
>>> list1 = [("a", 4), ("b", 8)] >>> vars().update(dict(list1)) >>> a 4 >>> b 8
Здесь vars() возвращает dict с привязками локальной переменной.Так как он возвращает указатель на единственный экземпляр (не копию), вы можете изменить его на месте (.update).
vars()
.update