我有以下红宝石哈希:红宝石哈希转
h = { i1: { q1: 1, q2:2 }, i2: { q1: 3, q2: 4} }
,我要转,如下所示:
{ q1: { i1: 1, i2: 3 }, q2: { i1: 2, i2: 4 } }
现在,我想出了我想要做什么的功能, 但我不知道是否有一个更简洁/优雅的方式为同一件事?
我的解决办法:
ht = Hash.new{ |h,k| h[k] = {} }
h.each_pair do |k,ih|
ih.each_pair{ |ik, iv| ht[ik][k] = iv }
end
这已经是非常succint。你有没有一个真实世界的例子,当你想改变这样的散列? – 2010-11-12 10:26:07
我有基本相同的数据结构(只是更大)与指标(i1,i2,...)和它们在某些日期(q1,q2,q3,...)的值。我仍然不确定天气我应该在这里使用二维数组(而实际上我仍然在评估两个版本......) – 2010-11-13 09:43:53
如果你经常做这种杂耍,你可能会发现使用Sqlite更容易。 – 2010-11-15 08:08:42