From: Ralph Shnelvar Date: 2012-01-17T05:16:28+09:00 Subject: Re: uniq with count; better way? Kenichi, Monday, January 16, 2012, 9:21:51 AM, you wrote: KK> 2012/1/17 Ralph Shnelvar : >> a = [4,5,6,4,5,6,6,7] >> >> result = Hash.new(0) >> a.each { |x| �result[x] += 1 } >> >> p result >> >> >> >> The result I am getting >> � {4=>2, 5=>2, 6=>3, 7=>1} >> is what I want. >> >> Is there a better way; perhaps using uniq? >> >> KK> I like this KK> a = [4,5,6,4,5,6,6,7] KK> # 1 KK> p Hash[a.group_by{|n|n}.map{|k, v|[k, v.size]}] KK> # 2 KK> p Hash.new(0).tap{|h|a.each{|n|h[n] += 1}} I like #2. I can understand it. I'm still having trouble wrapping my head around #1. Having said that, is your #2 better than mine in any dimension (comprehensibility and/or speed of execution?