【发布时间】:2016-02-13 02:57:34
【问题描述】:
我目前正在尝试通过使用字典而不是数组来修改一系列程序。我在文件中有原始信息列,然后将其读入 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 中的 key "a" 对应于 array "a"。
因此如果:
a = [1,2,3,4]
然后:
outputDict[a][0] = 1
但是,当我尝试创建此词典时,我收到以下错误:
TypeError: unhashable type: 'numpy.ndarray'
为什么我不能以这种方式构造一个数组?有什么解决方法(如果有的话)?任何帮助将不胜感激!
【问题讨论】:
-
试图构建一个将数组映射到同一个数组的字典是没有意义的。我认为您可能需要重新考虑其他程序需要哪些输入。似乎数组列表可能更有意义。
-
我了解您无法将数组映射到自身,对于任何混淆,我深表歉意。为了方便起见,我试图使键与数组具有相同的名称
-
您尝试过:
{'a':a, 'b':b,...},还是dict(a=a, b=b,...)?dict([('a', a), ('b', b)])也应该可以工作。 -
我同意 cel 的说法,尝试实现可以用数组解决问题的字典(这不是必需的)并不是一个好的编码方式。
-
问题是现在它试图在某个时候将一个 numpy 数组设置为一个键,这将不起作用,因为 python 不允许可变对象作为字典中的键。这就是不可哈希异常的来源
标签: python arrays numpy dictionary