这是关于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
但它没有用
这是关于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
但它没有用
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]
.
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]