ruby reorder keys in hash
# First thing to note that #sort/#sort_by will return a new array. Therefore, if we want to return the sorted hash in hash format, we need to call #to_h after #sort. hash = { a:1, bb:2, ccc:4, dddd:3, eeeee:2} # sort on key in decending order puts hash.sort_by {|k, v| -k.length }.to_h > {:eeeee=>2, :dddd=>3, :ccc=>4, :bb=>2, :a=>1} # you could do any thing to determine the sort order of the key this way # a normal sort would work like this (in Ruby 2.1 or higher): hash.sort.to_h