我有一个Ruby的哈希值,看起来像这样:得到第一个项目出一个Ruby数组的哈希
h = {"side1"=>["green", "Green"], "side2"=>["verde", "Verde"]}
我怎样才能在哈希特定的键获取第一个(或最后一个)项目?
我有一个Ruby的哈希值,看起来像这样:得到第一个项目出一个Ruby数组的哈希
h = {"side1"=>["green", "Green"], "side2"=>["verde", "Verde"]}
我怎样才能在哈希特定的键获取第一个(或最后一个)项目?
其实,你的问题中的示例伪代码是正确的。
为了您的哈希
h = {
"side1" => ["green", "Green"],
"side2" => ["verde", "Verde"]
}
键是'side1'
和'side2'
(与他们的价值观hashrocket右)
所以h['side2'].first
说,对关键'side2'
值,得到的第一个元素值为["verde", "Verde"]
,这是一个数组。 h['side2'][0]
也可以工作。别名first
是一种方便的方法。
要获取数组的最后一个元素而不必知道它有多大,请使用负索引。例如h['side2'][-1]
,在这种情况下相当于h['side2'][1]
。
请注意,散列中的键具体是关于它是字符串还是符号。这是h[:side2]
将返回零,因为密钥尚未设置。 Rails有一个类HashWithIndifferentAccess
,它将符号和字符串视为等效键。
编辑
我应该提到,我测试了我的答案irb
。 irb
是一个很好的方式来测试你的想法可能会和可能无法工作。在终端提示符下,输入irb
,进入并使用ruby。
是的。 puts h["side2"].first
应该工作。我想这表明Ruby遵循最少惊喜的原则,即你的伪代码和实际的代码一样。 :-)
我遇到了类似的情况,我从任意一个测试代码中随意选择散列中的“第一个”条目。这不是这个问题的真正含义,但它出现在我跑过的搜索中,所以它可能对其他人也这样做。
当然,“第一项”在散列中是任意的,但是keys方法将返回按某种魔法排序的所有键的列表。如果你喜欢该排序顺序,那么你就可以
h[h.keys.first]
任何哈希具有键和值 获得了“第一”的方法,你可以简单地
hash.values.first
hash.values.last
hash.keys.first
hash.keys.last
那么你将有值的数组你想要第一次或最后一次
'puts h ['side2] .first'是完全有效的语法。 'puts h ['side2] [0]'也可以。 –
我不明白为什么人们低估这个问题。我是新来的stackoverflow,但似乎这里downvoting是一种rtfm。如果问题是明确的,你可以从中学习,这在我的书 – BF4
^IMO根据要求,不知道为什么会需要这个设施。如果数据结构得到正确使用,并且执行同样好(没有黑客);那么你不会需要这个。毕竟你使用key选择散列元素而没有别的,或者我们使用数组。另外问题应该是'散列的第一个元素'。散列中的数组意味着别的东西。 – Ninad