を使用するのが最善の方法temp['key']
です。ただし、質問に答えるには、exec
関数を使用できます。この方法の利点は、変数名をハードコーディングしたり、関数内での作業に限定したりする必要がないことです。
from numpy import array,matrix
temp = {'key':array([1,2]),'b': 4.3,'c': 'foo','d':matrix([2,2])}
for k in temp:
exec('{KEY} = {VALUE}'.format(KEY = k, VALUE = repr(temp[k])))
>>> key
array([1, 2])
>>> b
4.3
>>> c
'foo'
>>> d
matrix([[2, 2]])
注 :これは、モジュールから特定の関数をインポートした場合にのみ機能します。コードの練習や、インポートする必要のある関数の膨大な量のためにこれを行いたくない場合は、エントリの前にモジュール名を連結する関数を書くことができます。出力は前の例と同じです。
import numpy as np,numpy
temp = {'key':np.array([1,2]),'b': 4.3,'c': 'foo','d':np.matrix([2,2])}
def exec_str(key,mydict):
s = str(type(mydict[key]))
if '.' in s:
start = s.index("'") + 1
end = s.index(".") + 1
v = s[start:end:] + repr(mydict[key])
else:
v = repr(mydict[key])
return v
for k in temp:
exec('{KEY} = {VALUE}'.format(KEY = k, VALUE = exec_str(k,temp)))
これはコードのベスト プラクティスではありませんが、テストしたすべての例でうまく機能します。