Как вывести строку, содержащую символ равенства? - PullRequest
2 голосов
/ 11 января 2012

У меня есть некоторые проблемы с функцией eval.У меня есть список, например,

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

, и я хотел бы присвоить каждому значению кортежа первый элемент:

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

Как я могу это сделать?

Ответы [ 2 ]

12 голосов
/ 11 января 2012

Вы могли бы сделать это:

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

Но не надо. На самом деле нет. Вам не нужны динамические локальные переменные, вам нужен словарь:

my_dict = dict(list1)
3 голосов
/ 11 января 2012

Для этого вам не нужно eval.

Вы можете получить доступ к локальной среде напрямую, вызвав встроенную функцию vars.Вот пример интерактивного сеанса:

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

Здесь vars() возвращает dict с привязками локальной переменной.Так как он возвращает указатель на единственный экземпляр (не копию), вы можете изменить его на месте (.update).

...