要素の個数を数える

配列内の同じ要素それぞれの個数を数える。

 cf. 要素の個数を数える – 惰力飛行

Ruby でやってみる。Array#group_by が使えそう。

irb(main):001:0> lang = %w(perl python ruby perl python python ruby python ruby lisp)
=> ["perl", "python", "ruby", "perl", "python", "python", "ruby", "python", "ruby", "lisp"]
irb(main):002:0> lang.group_by{|x| x}.map{|k, v| [k, v.size]}.to_h
=> {"perl"=>2, "python"=>4, "ruby"=>3, "lisp"=>1}

いったん [[要素, 個数]] という配列の配列を作って、Array#to_h でハッシュにしている。うまく1行で書けた。