1

これは、ruby​​ の値のグループ内のハッシュマップの min_byに関するフォローアップの質問です。

以下のようなハッシュマップがあります

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

各キーと値のペアの 3 番目の値の最小数と、最小値が見つかった配列の 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]: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 に答える