如何在哈希中获取min键值对

Gal*_*let 2 ruby hash ruby-on-rails min

我想获取哈希值中的最小值.

输入:

test = {'a'=> 1, 'b'=> 2, 'c' => 0.4, 'd' => 0.32, 'e' => 0.03, 'f' => 0.02, 'g'=> 0.1}
Run Code Online (Sandbox Code Playgroud)

预期结果:

{'f'=> 0.02}
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到预期的结果?

我需要所有最小的键/值对.如果{'a'=>1,'b'=>1,'c'=>2}预期的结果应该是{'a'=>1,'b'=>1}.

saw*_*awa 11

[test.min_by{|k, v| v}].to_h
Run Code Online (Sandbox Code Playgroud)


更改后的问题答案:

test.group_by{|k, v| v}.min_by{|k, v| k}.last.to_h # => {"f"=>0.02}
Run Code Online (Sandbox Code Playgroud)

要么

test.group_by(&:last).min_by(&:first).last.to_h # => {"f"=>0.02}
Run Code Online (Sandbox Code Playgroud)


Uri*_*ssi 8

test.select { |_, v| v == test.values.min }
Run Code Online (Sandbox Code Playgroud)

为了提高效率:

min_val = test.values.min
test.select { |_, v| v == min_val }
Run Code Online (Sandbox Code Playgroud)