0

我有以下形式的哈希图:

{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'组的最小值?

4

3 回答 3

2
hash.values.select {|a| a[0] == 'a'}.map {|a| a[2]}.min
于 2013-05-23T01:02:38.933 回答
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
于 2013-05-23T01:11:30.110 回答
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
于 2013-05-23T04:01:49.870 回答