在Ruby哈希中查找重复项

我有一个哈希数组,我需要根据哈希值之间的一个匹配值来查找和存储匹配项。

a = [{:id => 1, :name => "Jim", :email => "jim@jim.jim"}, {:id => 2, :name => "Paul", :email => "paul@paul.paul"}, {:id => 3, :name => "Tom", :email => "tom@tom.tom"}, {:id => 1, :name => "Jim", :email => "jim@jim.jim"}, {:id => 5, :name => "Tom", :email => "tom@tom.tom"}, {:id => 6, :name => "Jim", :email => "jim@jim.jim"}] 

所以我想回来

 b = [{:id => 1, :name => "Jim", :email => "jim@jim.jim"}, {:id => 3, :name => "Tom", :email => "tom@tom.tom"}, {:id => 5, :name => "Tom", :email => "tom@tom.tom"}, {:id => 6, :name => "Jim", :email => "jim@jim.jim"}] 

注意:我可以通过以下方式对数据(csv)进行排序:name事后:name ,因此它们不必很好地分组,只是准确。 此外,它不必两个相同,可能是3或10或更多。

此外,数据大约是22,000行。

我对此进行了测试,它将完全符合您的要求:

 b = a.group_by { |h| h[:name] }.values.select { |a| a.size > 1 }.flatten 

但是,您可能希望查看该计算中生成的某些中间对象,并查看它们是否对您更有用。