我有以下形式的哈希图:
{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'组的最小值?
我有以下形式的哈希图:
{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'组的最小值?
hash.values.select {|a| a[0] == 'a'}.map {|a| a[2]}.min
如果您想要所有分组的映射,您可以使用:
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
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