Reverse a hash in Ruby

hashmap, ruby

Solution

You could convert the Hash to an Array, reverse that, and then convert it back to a Hash:

reversed_h = Hash[h.to_a.reverse]

`Hash#to_a` gives you an array of arrays, the inner arrays are simple `[key,value]` pairs, then you reverse that array using `Array#reverse`, and `Hash[]` converts the `[key,value]` pairs back into a Hash.

Ruby 2.1 adds an `Array#to_h` method so you can now say:

reversed_h = h.to_a.reverse.to_h

Problem

How would I reverse the elements in the hash, keeping the same values and keys, but reversing their order in the hash. Like so: ``` { "4" => "happiness", "10" => "cool", "lala" => "54", "1" => "spider" } ``` And convert that to: ``` { "1" => "spider", "lala" => "54", "10" => "cool", "4" => "happiness" } ``` Or, perhaps I could run a `each` loop backwards, starting from the last element in the hash, rather than the first?

Original source