その値に基づいて、他のキーに対するハッシュ内の各キーのランクを決定しようとしています。値は数値です。ランクは繰り返すことができます (つまり、3 つのキーが同点で 1 位になることができます)。これは機能しますが、醜いです。
standings.sort_by {|k, v| v}.reverse!
prev_k = nil
standings.each_with_index do |(k, v), i|
if i == 0
k.rank = 1
elsif v == standings[prev_k]
k.rank = prev_k.rank
else
k.rank = prev_k.rank + 1
end
prev_k = k
end