Reverse a hash in Ruby

后端 未结 9 1064
无人共我
无人共我 2021-02-06 23:22

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         


        
9条回答
  •  借酒劲吻你
    2021-02-06 23:38

    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
    

提交回复
热议问题