1

这是关于min_by 在 ruby​​ 中的一组值中的哈希图中的后续问题。

我有一个如下的哈希图

{1=>[a, b, 3], 2=>[a, c, 5], 3=>[a, d, 1], 4=>[a, e, 4], 5=>[f, g, 2]}...

我需要每个键值对中第三个值的最小数量以及找到最小值的数组的第二个值。我试过了

hash.values.select {|a,b,c| a[0] == 'a'}.map {|a| a[2]}.min

但它没有用

4

2 回答 2

3
h = {1=>[:a, :b, 3], 2=>[:a, :c, 5], 3=>[:a, :d, 1], 4=>[:a, :e, 4], 5=>[:f, :g, 2]}
h.min_by { |k, v| v[2] }[1][1..2]
# => [:d, 1]

# Only values having :a as first element
h.select{ |k,v| :a == v[0] }.min_by { |k, v| v[2] }[1][1..2]
# => [:d, 1]

在这两个示例[1..2]中,[1]如果您想获取 just:d而不是[:d, 1].

于 2013-05-23T18:11:28.167 回答
1
h = {1=>['a', 'b', 3], 2=>['a', 'c', 5], 3=>['a','d', 1], 4=>['a', 'e', 4], 5=>['f', 'g', 2]} 
h.select {|k,v| v[0] == 'a' }.min_by{|k,v| v.last}.last[-2..-1]
于 2013-05-23T18:11:03.940 回答