0
0
RubyHow-ToBeginner · 3 min read

How to Sort Hash by Key in Ruby: Simple Guide

In Ruby, you can sort a hash by its keys using Hash#sort or Hash#sort_by methods. These methods return an array of key-value pairs sorted by keys, which you can convert back to a hash with to_h.
📐

Syntax

To sort a hash by its keys, use hash.sort or hash.sort_by { |key, value| key }. Both return an array of pairs sorted by key. Convert the result back to a hash with to_h.

  • hash.sort: Sorts by keys by default.
  • hash.sort_by { |key, value| key }: Explicitly sorts by keys.
  • to_h: Converts sorted array back to a hash.
ruby
sorted_hash = hash.sort.to_h
💻

Example

This example shows how to sort a hash by its keys alphabetically and get a new sorted hash.

ruby
hash = {"banana" => 3, "apple" => 5, "cherry" => 2}
sorted_hash = hash.sort.to_h
puts sorted_hash
Output
{"apple"=>5, "banana"=>3, "cherry"=>2}
⚠️

Common Pitfalls

One common mistake is expecting sort to modify the original hash. It does not; it returns a sorted array. You must convert it back to a hash with to_h if you want a hash result. Also, sorting a hash returns an array by default, so forgetting to_h can cause unexpected types.

ruby
wrong = {"b" => 2, "a" => 1}
sorted_wrong = wrong.sort
puts sorted_wrong.class # Outputs Array

right = wrong.sort.to_h
puts right.class # Outputs Hash
Output
[["a", 1], ["b", 2]] Hash
📊

Quick Reference

MethodDescriptionReturns
hash.sortSorts hash by keys, returns array of pairsArray
hash.sort_by { |k, v| k }Sorts hash by keys explicitlyArray
array.to_hConverts sorted array back to hashHash

Key Takeaways

Use hash.sort.to_h to get a new hash sorted by keys.
Sorting a hash returns an array; convert it back with to_h.
Original hash is not changed by sort; it returns a new sorted collection.
Use sort or sort_by with key to control sorting behavior.