最好的办法是使用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)))
虽然这不是最佳代码实践,但它适用于我测试的所有示例。