Given an array:
array = [[:a,:b],[:a,:c],[:c,:b]]
Return the following hash:
hash = { :a => [:b,:c
This can be done fairly succinctly using each_with_object.
array.each_with_object({}) { |(k, v), h| h[k] = (h[k] || []) + [v] }
Demonstrating in irb:
irb(main):002:0> array = [[:a,:b],[:a,:c],[:c,:b]]
=> [[:a, :b], [:a, :c], [:c, :b]]
irb(main):003:0> array.each_with_object({}) { |(k, v), h| h[k] = (h[k] || []) + [v] }
=> {:a=>[:b, :c], :c=>[:b]}