【发布时间】:2012-03-01 20:43:37
【问题描述】:
编辑:
简而言之
我有一个实体的 3 个属性,我有大约 100 个这样的实体。我需要一个好的数据结构来有效地存储和检索它们。
例子:
让我们考虑一个 100 像素的图像。
每个像素都有三个属性 - 红色、绿色和蓝色。我需要将整个图像的像素和 RGB 值存储在像 Hash 这样的数据结构中。
我想到的一个示例数据结构是这样的:
x={[:red => 1, :green => 2, :blue => 3],[:red => 21, :green => 21, :blue => 32], [:red => 21, :green => 21, :blue => 32]}
我的问题:
1) 有没有更好的方法来存储这些数据集? 2) 有没有一种有效的方法来访问这些集合数据?
换句话说,存储多个键值对集合数据并有效访问它们的最简单和有效的方法是什么?
免责声明:我是 Ruby 的新手(取得了大约 50% 的进步)。
谢谢。
【问题讨论】:
-
嗨。你在哪里看到那个哈希?它存在语法问题:哈希看起来像
x = { 'red' => '1', 'green' => '2' }。并且哈希键是唯一的,因此当您使用第二个'red'键时,您已经删除了第一个键。 -
哈希有一个键和一个值。键和值都是 ruby 对象。如果你的键是一个字符串,它就是一个字符串。此外,您的哈希值有问题。您实际上是在复制您在屏幕上看到的内容,还是在重新输入?
-
@Marc Talbot 嗨,这些正是我从 RMAGICK 得到的输出。我正在使用 color_histogram 给我这个散列,以防有帮助。这是文档的链接:imagemagick.org/RMagick/doc/image1.html#color_histogram
-
@Tom L 这就是我选择问这个问题的原因之一,这种语法很奇怪,但我上面引用的代码有效,我能够检索它的值。无论如何,感谢您的澄清!由于我的原始哈希无效,让我们假设 - 我想要这样的东西: x={[red=0,green=1,blue=3],[red=2,green=5,blue=2],[red =1,green=4,blue=3]} 在 Ruby 中重新创建这样的数组哈希(并访问它)的最简单方法是什么?有什么想法吗?
-
color_histogram 返回一个哈希,其中键是像素对象,值是数字。