"jim@jim.jim"}, -6ren">
gpt4 book ai didi

ruby - 在 Ruby 哈希中查找保留重复项

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:54 26 4
gpt4 key购买 nike

我有一个散列数组,我需要在其中根据散列之间的一个匹配值查找和存储匹配项。

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"}]

注意:我可以在事后按 :name 对数据 (csv) 进行排序,这样它们就不必很好地分组,只要准确即可。也不必两个相同,可以是 3 个或 10 个或更多。

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

最佳答案

我对此进行了测试,它会完全按照您的要求执行:

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

但是,您可能想要查看该计算中产生的一些中间对象,看看它们是否对您更有用。

关于ruby - 在 Ruby 哈希中查找保留重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18222456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com