我有以下形式的散列图:
{1=>[a, b, 3], 2=>[a, c, 5], 3=>[a, d, 1], 4=>[a, e, 4], 5=>[f, g, 2]}...
我需要每个键值对中第三个值的最小数量,但是在相同第一个值的组中。例如,在上面的hashmap中,有四个键值对,第一个值为'a',我需要检索第一个值为'a'的第三个值的最小值,即1
我尝试了hash.min_by{|k, v|, v[2]}
,显然它在地图上给了我最小值。我是如何得到'a'组的最小值?
答案 0 :(得分:2)
hash.values.select {|a| a[0] == 'a'}.map {|a| a[2]}.min
答案 1 :(得分:1)
如果您想要使用所有分组的映射:
hash.values.each_with_object(Hash.new) do |(group_by, _, v), min_map|
current_min = min_man[group_by] ||= v
min_map[group_by] = v if v < current_min
end
答案 2 :(得分:0)
h = {1=>['a', 'b', 3], 2=>['a', 'c', 5], 3=>['a','d', 1], 4=>['a', 'e', 4], 5=>['f', 'g', 2]} #=>1
h.map{|k,v| v.last if v[0] == 'a' }.compact.min #=>1