How to print a Ruby hash sorted by value

I recently needed to print the information in a Ruby hash, with the results sorted by value. Here's a general recipe on how to print the hash results sorted by value. I've created a sample hash, and populated the hash with sample data, to show how this works.

First, here's the sample code, using the first name of each person as the key, and the last name as the value of the key/value pair:

# an example of how to sort a Ruby hash by value.
# first, create the hash and populate it.
hash =
hash['al'] = 'alexander'
hash['barney'] = 'rubble'
hash['fred'] = 'flinstone'
hash['john'] = 'doe'

# sort the hash by value, and print the results in the sorted order.
hash.sort{|a,b| a[1]<=>b[1]}.each { |elem|
  puts "#{elem[1]}, #{elem[0]}"

Next, here are the results when this Ruby program is run, showing that the hash is indeed sorted by value (in this case the last name):

alexander, al
doe, john
flinstone, fred
rubble, barney


Post new comment