簡體   English   中英

在Ruby哈希中查找重復項

[英]Find keep duplicates in Ruby hashes

我有一個哈希數組,我需要根據哈希值之間的一個匹配值來查找和存儲匹配項。

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

但是,您可能希望查看該計算中生成的一些中間對象,並查看它們是否對您更有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM