{"Journal"=>[[4, -785.0],
[13, -21.9165000915527],
[14, -213.008995056152],
[15, -50.074499130249]]}
如何在Ruby中迭代此散列,以及如何分隔出键值&值?迭代哈希集合
{"Journal"=>[[4, -785.0],
[13, -21.9165000915527],
[14, -213.008995056152],
[15, -50.074499130249]]}
如何在Ruby中迭代此散列,以及如何分隔出键值&值?迭代哈希集合
myHash.each do |key, value|
// key holds the key, value holds the value
end
如果要变换的阵列的阵列内的地图做到这一点:
myNewHash = {}
myArrayOfArrays = myHash["Journal"]
myArrayOfArrays.each do | item |
myNewHash[item[0]] = item[1]
end
Ruby有一个统一的迭代接口。 Ruby中的所有集合都有一个名为each
的方法,它允许您遍历集合中的每个元素。但是请注意,显式迭代是一种代码异味。您应该主要使用更高级别的迭代器,如map
,reduce
,select
,find
,reject
等。
在其中集合是一个Hash
,正被产生到您的块中的每个元件此特定情况下,是由键和值的二单元阵列:
print hsh.reduce('') {|s, el|
s << "The key is #{el.first} and the value is #{el.last}.\n"
}
由于Ruby的解构绑定,你可以简单地在阵列的两个元素绑定到你的格挡两个变量,你会不会需要不断的拆开阵列:
print hsh.reduce('') {|s, (k, v)|
s << "The key is #{k} and the value is #{v}.\n"
}
如果需要通过一个HashMap迭代,你是也许使用错误的容器 – Scoregraphic 2010-08-16 13:32:34
@分数图 - 不一定 - 这并不罕见。例如:序列化数据。 – 2010-08-16 13:36:09
等待,你有一个单一的键/值对的散列,其值是一个数组数组? – haffax 2010-08-16 13:39:38