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)
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)
| 归档时间: |
|
| 查看次数: |
4687 次 |
| 最近记录: |