我有以下哈希 {"CA"=>2, "MI"=>1, "NY"=>1}
如何使用ruby返回最大键值对?我希望它返回"CA"
鉴于这里的哈希数组:
arr = [{:question_type=>"Fire", :total=>0.0}, {:question_type=>"Water", :total=>0.0}, {:question_type=>"Metal", :total=>0.0}, {:question_type=>"Earth", :total=>0.0}, {:question_type=>"Wood", :total=>100.0}]
Run Code Online (Sandbox Code Playgroud)
我想选择总键值最高的哈希值。所以下面的代码似乎可以完成工作
max = arr.max_by{|x| x[:total]}
puts max[:question_type]
#=> Wood
Run Code Online (Sandbox Code Playgroud)
但是,如果我有 2 个具有相同值的哈希,它将只返回第一个
arr2 = [{:question_type=>"Fire", :total=>0.0}, {:question_type=>"Water", :total=>0.0}, {:question_type=>"Metal", :total=>0.0}, {:question_type=>"Earth", :total=>50.0}, {:question_type=>"Wood", :total=>50.0}]
max = arr2.max_by{|x| x[:total]} #it should be arr2
puts max[:question_type]
#=> Earth
Run Code Online (Sandbox Code Playgroud)
什么是得到它返回的最佳方式Earth,并Wood在情况下,两个都是最高值?