January 11, 2022
Lists and group_by (Ruby)
The method group_by is a very useful and easy feature for working with lists - https://apidock.com/ruby/Enumerable/group_by
For the examples, we use this simple list of cities.
cities = [ { id: 1, description: 'Porto Alegre', country: 'Brazil' }, { id: 2, description: 'London', country: 'UK' }, { id: 3, description: 'New York', country: 'USA' }, { id: 3, description: 'Rio de Janeiro', country: 'Brazil' } ]
Example 1 - Hash of objects indexed by attribute
cities.group_by{ |city| city[:id] }.transform_values(&:first)
Result
{ 1 => {id: 1, description: 'Porto Alegre', country: 'Brazil'}, 2 => {id: 2, description: 'London', country: 'UK'}, 3 => {id: 3, description: 'New York', country: 'USA'} }
Example 2 - Aggregate and counting
cities.group_by{ |city| city[:country] }.transform_values(&:count)
Result
{ 'Brazil' => 2, 'UK'=>1, 'USA'=>1 }