ruby sort hash by value code example

Example 1: 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

Example 2: sort hash ruby

people = {
  :fred => 23,
  :joan => 18,
  :pete => 54
}

# First option
people.values.sort    # => [18, 23, 54]

# Seconf option
people.sort_by { |name, age| age }
  # => [[:joan, 18], [:fred, 23], [:pete, 54]]

Tags:

Ruby Example