ruby: how to find non-unique elements in array and print each with number of occurrences?

后端 未结 8 1432
轻奢々
轻奢々 2020-12-31 03:54

I have

a = [\"a\", \"d\", \"c\", \"b\", \"b\", \"c\", \"c\"]

and need to print something like (sorted descending by number of occurrences)

相关标签:
8条回答
  • 2020-12-31 04:24

    How about:

    a.sort.chunk{|x| a.count(x)}.sort.reverse.each do |n, v|
      puts "#{v[0]}:#{n}" if n > 1
    end
    
    0 讨论(0)
  • 2020-12-31 04:26

    I personally like this solution:

     a.inject({}) {|hash, val| hash[val] ||= 0; hash[val] += 1; hash}.
       reject{|key, value| value == 1}.sort.reverse.
       each_pair{|k,v| puts("#{k}:#{v}")}
    
    0 讨论(0)
提交回复
热议问题