最好的方法是使用
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)))
虽然这不是最佳的代码实践,但在我测试的所有示例中都能很好地工作。