我目前正试图通过使用字典而不是数组来修改一系列程序。我在文件中有原始信息列,然后将其读入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'
为什么我不能以这种方式构建数组?如果有的话,解决方法是什么?任何帮助将不胜感激!
答案 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'等成为键,而不是变量值。