我希望你能够获取哈希表中最小的值。
输入:
test = {'a'=> 1, 'b'=> 2, 'c' => 0.4, 'd' => 0.32, 'e' => 0.03, 'f' => 0.02, 'g'=> 0.1}
期望的结果:
{'f'=> 0.02}
如何获得预期结果?
我需要所有最小的键/值对。例如,如果 {'a'=>1,'b'=>1,'c'=>2}
,则预期结果应为 {'a'=>1,'b'=>1}
。
我希望你能够获取哈希表中最小的值。
输入:
test = {'a'=> 1, 'b'=> 2, 'c' => 0.4, 'd' => 0.32, 'e' => 0.03, 'f' => 0.02, 'g'=> 0.1}
期望的结果:
{'f'=> 0.02}
如何获得预期结果?
我需要所有最小的键/值对。例如,如果 {'a'=>1,'b'=>1,'c'=>2}
,则预期结果应为 {'a'=>1,'b'=>1}
。
[test.min_by{|k, v| v}].to_h
答案在改变后的问题中回答:test.group_by{|k, v| v}.min_by{|k, v| k}.last.to_h # => {"f"=>0.02}
或者test.group_by(&:last).min_by(&:first).last.to_h # => {"f"=>0.02}
test.select { |_, v| v == test.values.min }
为了使其更加高效: min_val = test.values.min
test.select { |_, v| v == min_val }
您也可以在不使用.min
方法的情况下实现此操作:
def min_key_value_pair (test)
if test == {}
return nil
else
test = test.sort_by {|k, v| v}
test[0]
end
end
test[0][0]
即可。
希望这对你有所帮助!test = {'a'=> 1, 'b'=> 2, 'c' => 0.4, 'd' => 0.32, 'e' => 0.03,
'f' => 0.02, 'g'=> 0.1}
Hash[*test.sort_by(&:last)[0]]
输出将根据您的期望进行
=> {"f"=>0.02}