Python字典:将值作为变量赋值给key

时间:2014-03-13 15:27:39

标签: python variables dictionary key key-value

我是一个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]

但这不太有用,我不确定为什么。很抱歉,我无法在此处提供更好的错误说明,但目前我无法访问我的代码。 任何帮助表示赞赏!提前谢谢!

1 个答案:

答案 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,...)来创建字典,但如果使用局部变量覆盖该名称则不能。