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