Ruby-查找两个非常大的数组之间的差异的有效方法吗?

和卢比奥

在查找两个非常大的数组之间的差异时,我遇到了一个与效率和算法有关的问题。我希望对算法有深入了解的人能够为我解决该问题的正确方法指明方向,因为我当前的实现需要花费非常长的时间。

问题:

我有两个非常大的阵列。一个包含一个包含无效域名的电子邮件列表,另一个包含我需要对照第一个数组检查的混合列表。

accounts_with_failed_email_domains = [279,000 records in here]

unchecked_account_domains = [149,000 records in here]

我需要做的是浏览的列表,unchecked_account_domains然后比较每个条目以查看中是否有匹配项accounts_with_failed_email_domains我需要将列表之间的所有匹配项插入一个单独的数组中,以便以后处理。

如何有效地编写可以快速检查这些帐户的内容。到目前为止,这是我尝试过的。

unchecked_account_domains = [really big array]
unchecked_account_domains = unchecked_account_domains.sort

accounts_with_failed_email_domains = [another huge array].sort

unchecked_account_domains.keep_if do |email|
  accounts_with_failed_email_domains.any? { |failed_email| email == failed_email }
end

# Count to see how many accounts are left
puts unchecked_account_domains.count

上面的实现一直在运行。这是第二次尝试,但仍然证明没有任何更好的尝试。

unchecked_account_domains = [really big array]
unchecked_account_domains = unchecked_account_domains.sort

accounts_with_failed_email_domains = [another huge array].sort

unchecked_account_domains.each do |email|
  accounts_with_failed_email_domains.bsearch do |failed_email| 
     final_check << email if email == failed_email 
  end
end

# Count to see how many accounts are left
puts final_check.count

bsearch似乎很有希望,但是我敢肯定我没有正确使用它。另外,我尝试研究比较大型列表的问题,但这确实存在,python而且我似乎找不到Ruby的等效项set有人对如何解决这个问题有任何想法吗?

伊利亚

看来您可以使用Array#-

result = unchecked_account_domains - accounts_with_failed_email_domains

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ruby:比较两个数组的有效方法

Ruby on Rails-比较两个大型数组以获取不匹配结果的最有效方法

如何使用numpy查找两个非常大的矩阵的行之间的成对差异?

在python 3中的两个非常大的元组列表中查找通用元组索引的最有效方法?

可以获取数组中两个给定数字之间的所有整数的方法 - Ruby

python3中两个非常大的文件交叉的最有效方法?

Ruby中两个没有正负的数字之间的差异

查找两个标记之间的所有出现内容(Ruby)

有两个非常大的列表/集合 - 如何有效地检测和/或删除重复项

比较Ruby中数组的最有效方法

Ruby连接字符串数组,最后两个元素之间有空格

Ruby / Rails - 根据参数将数组分为两组并显示两者的最有效方法

确定Ruby数组/字符串中最大匹配序列的有效方法(在Ruby中)?

合并两个都有键值对的数组(Ruby)

查找两个数据集之间差异的有效方法

如果Ruby 2.5仅包含一个键/ val对的哈希,则Ruby 2.5删除ruby键的有效方法

在RethinkDB中获得两个流之间差异的有效方法

声明一个变量和直接在 Ruby 的方法中使用它之间有什么性能差异吗?

Ruby:对每个子数组的第一个元素分组的元素求和的有效方法

Ruby-使用哈希返回数组中的重复项,这有效吗?

查找两个日期之间有保险的员工的更有效方法

在两个数组之间迭代以查找匹配值的最有效方法是什么?

在Ruby中解析非常大的JSON文件的正确方法是什么?

查找Ruby中周期和范围集之差的有效方法

在Python中两个给定路径之间查找公用文件的有效方法

查找Java中两个圆之间的距离的最有效方法?

查找两个表之间重叠的最有效方法

查找树中两个给定顶点之间的路径的最有效方法

查找数组的两个列表之间所有不同的交集和差异的Python方法