Лучше всего использовать 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)))
Хотя это не лучшая практика кода, он работает хорошо для всех примеров, которые я тестировал.