【发布时间】:2014-09-30 21:58:49
【问题描述】:
我似乎迷失了试图实现以下目标,我尝试了一整天,请帮助
我有
h = {
"kv1001"=> {
"impressions"=>{"b"=>0.245, "a"=>0.754},
"visitors" =>{"b"=>0.288, "a"=>0.711},
"ctr" =>{"b"=>0.003, "a"=>0.003},
"inScreen"=>{"b"=>3.95, "a"=>5.031}
},
"kv1002"=> {
"impressions"=>{"c"=>0.930, "d"=>0.035, "a"=>0.004, "b"=>0.019,"e"=>0.010},
"visitors"=>{"c"=>0.905, "d"=>0.048, "a"=>0.005, "b"=>0.026, "e"=>0.013},
"ctr"=>{"c"=>0.003, "d"=>0.006, "a"=>0.004, "b"=>0.003, "e"=>0.005},
"inScreen"=>{"c"=>4.731, "d"=>4.691, "a"=>5.533, "b"=>6.025, "e"=>5.546}
}
}
我的目标
{
"segment"=>"kv1001=a",
"impressions"=>"0.754",
"visitors"=>"0.711",
"inScreen"=>"5.031",
"ctr"=>"0.003"
}, {
"segment"=>"kv1001=b",
"impressions"=>"0.245",
"visitors"=>"0.288",
"inScreen"=>"3.95",
"ctr"=>"0.003"
}, {
"segment"=>"kv1002=a",
"impressions"=>"0.004"
#... etc
}
我的目标是创建一个带有“kv1001=a”的散列,即散列中的字母,并分配展示次数、访问者等键。示例 MY GOAL 的格式为 所以格式类型“kv1001=a”必须由hash本身构造,a是hash里面的字母。
我现在解决了这个问题
`data_final = []
h.each do |group,val|
a = Array.new(26){{}}
val.values.each_with_index do |v, i|
keys = val.keys
segment_count = v.keys.length
(0..segment_count-1).each do |n|
a0 = {"segment" => "#{group}=#{v.to_a[n][0]}", keys[i] => v.to_a[n][1]}
a[n].merge! a0
if a[n].count > 4
data_final << a[n]
end
end
end
end`
【问题讨论】:
-
你试过什么?还不清楚您要实现什么,格式化哈希会有所帮助。
-
你能详细说明一下规则吗?看来您正在尝试分离
a和b组件(这是用于 A/B 测试吗?)。但是c、d和e呢? -
我重新格式化了您的代码,以便您可以看到您的目标不是有效的哈希。你想让它成为一个哈希数组吗?
-
您可能应该编辑问题以添加您的代码。
标签: ruby-on-rails ruby data-structures hash