我是一个python初学者并创建了一个短字典,它将大写字母作为1x3数组的键作为相应的值进行链接。所以类似的东西:
dict = {'A': array([1, 2, 3]), 'B': array([2.1, 3.2, 4]), etc. }
作为我的程序的一部分,我需要将值作为函数分配给值。但不是写作:
A = array([1, 2, 3])
B = array([2.1, 3.2, 4])
etc.
我想找到一个更通用,更抽象,更简单的代码。到目前为止,我可以提出:
for i in dict:
i = dict[i]
但这不太有用,我不确定为什么。很抱歉,我无法在此处提供更好的错误说明,但目前我无法访问我的代码。 任何帮助表示赞赏!提前谢谢!
答案 0 :(得分:1)
在for循环中,您将键(" A"," B"等)分配给变量i。所以,你纠正了你可以使用dict [i]访问数组;然而,将它们分配给我并没有多大意义。我的猜测是你第一次想要更像A = dict [i]的东西,而B = dict [i]第二次,等等。你可能不需要这个,因为字典给你一个很好的自然方式来访问这些阵列。
那说,有办法得到你想要的东西。在你的循环中,你可以这样说:
from numpy import array
d = {'A': array([1, 2, 3]), 'B': array([2.1, 3.2, 4])}
for key, val in d.items():
vars()[key] = val
print "A =", A
print "B =", B
虽然这有点尴尬,因为python中的命名空间无论如何都是字典,所以你只需要把你的字典放在vars()给你的字典中。
另外,顺便说一下,打电话给你的词典' dict'它有点混乱(但仍然有效)。因为dict是字典类的内置名称。因此,您可以使用dict(a = 0,b = 1,...)来创建字典,但如果使用局部变量覆盖该名称则不能。