eval
機能に問題があります。私は等号を含む文字列を評価するには?
list1 = [('a',1), ('b',2), ('c',3)]
、例えば、のようなリストを持っていると私は、最初の要素をタプルの各値を代入したいと思います:
for el in list1 :
eval(el[0]) = el[1]
私はこれをどのように行うことができますか?
exec('%s = %s' % el)
をしかしない:
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
の組み込み関数を呼び出します。ここでの例では、対話型セッションです:
>>> list1 = [("a", 4), ("b", 8)]
>>> vars().update(dict(list1))
>>> a
4
>>> b
8
ここではローカル変数の束縛とのdictを返しvars()
。唯一のインスタンス(コピーではない)へのポインタを返すので、その場所で修正することができます(.update
)。
+1 [Pythonでevalを使用するのは悪い習慣ですか?](http://stackoverflow.com/questions/1832940/is-using-eval-in-python-a-bad-practice) – gecco
'eval' works表現上でのみ。それには 'exec'が必要です。それでも、彼はそれをすべきではありません:P –
@RicardoCárdenesあなたは正しいです、感謝訂正されました。辞書を使用する –