如何使用python将数组存储在字典中

时间:2015-11-11 21:41:09

标签: python arrays numpy dictionary

我目前正试图通过使用字典而不是数组来修改一系列程序。我在文件中有原始信息列,然后将其读入ASCII csv文件。我需要将此文件转换为字典,以便将其输入另一个程序。

我使用numpy.genfromtxt从csv文件中提取我需要的信息,遵循以下格式:

a,b,c,d = np.genfromtxt("file",delimiter = ',', unpack = true)

这一步完全正常。

然后我尝试建立一个字典:

ouputDict = dict([a,a],[b,b],[c,c],[d,d])

据我了解,这应该使字典中的键" a" 对应数组" a"

因此如果:

a = [1,2,3,4]

然后:

outputDict[a][0] = 1

但是,当我尝试创建此词典时,我收到以下错误:

TypeError: unhashable type: 'numpy.ndarray'

为什么我不能以这种方式构建数组?如果有的话,解决方法是什么?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

即使使用集合

,您也可以这样做

将您的字典声明为:

Dictionary = {}; // {} makes it a key, value pair dictionary

通过声明

添加您希望数组作为键的值

Dictionary[a] = [1,2,3,4]; // [] makes it an array

所以现在你的字典看起来像

{a: [1,2,3,4]}

对于密钥a,你有一个数组,你可以在你可以访问的数据中插入数据,如字典[a] [0],它将给出值1,依此类推。 :)

顺便说一下..如果你看一下字典,数组和键值对,嵌套字典的例子,你的概念就会越来越清晰。

答案 1 :(得分:0)

从我的评论中复制:

更正词典格式:

{'a':a, 'b':b,...}, or 
dict(a=a, b=b,...)
dict([('a', a), ('b', b),...])

目标是使字符串'a','b'等成为键,而不是变量值。