【问题标题】:How to store an array in a dictionary using python如何使用python将数组存储在字典中
【发布时间】: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


【解决方案1】:

即使使用集合也可以做到这一点

将你的字典声明为:

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,依此类推。 :)

顺便说一句.. 如果您查看字典、数组和键值对、嵌套字典的示例,您的概念会变得更加清晰。

【讨论】:

  • 哦,我明白了,我刚刚开始解释基本格式..哈哈..旧习惯
  • 这真的很有帮助,我以前没有接触过在字典中存储数组!你已经解决了我的问题,谢谢你发帖@AmanChawla
【解决方案2】:

复制自我的评论:

正确的字典格式:

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

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

【讨论】:

  • 感觉像个菜鸟,花了一个小时盯着字典文档...谢谢!
猜你喜欢
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2011-02-22
  • 2013-05-06
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多