The title says it all.
total = {\"Bob\"=>37, \"Alice\"=>42, \"Carl\"=>42}
I want to sort it by value, and then by key, but with th
Use sort:
total = {"Bob"=>37, "Alice"=>42, "Carl"=>42}
total.sort { |(k1, v1), (k2, v2)| [v1, k2] <=> [v2, k1] }.to_h
# => {"Bob"=>37, "Carl"=>42, "Alice"=>42}
First, sort by values (v1 <=> v2
) and then reverse sort by keys (k2 <=> k1
), and since we need it simultaneously, put it into array.
EDIT: @Mirror318, it just looks scary, take a look at the excellent explanation here: What is the Ruby <=> (spaceship) operator?