gpt4 book ai didi

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

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

在查找两个非常大的数组之间的差异时,我遇到了有关效率和算法的问题。我希望对算法有很好理解的人可以为我指出正确的方向来解决这个问题,因为我当前的实现花费了非常长的时间。

问题:

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

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 似乎很有前途,但我很确定我没有正确使用它。另外,我试着研究这个问题 comparing large lists但这是在 python 中,我似乎找不到与 set 等效的 Ruby。有没有人知道如何解决这个问题?

最佳答案

看起来你可以使用Array#-:

result = unchecked_account_domains - accounts_with_failed_email_domains

关于arrays - Ruby - 是找到两个非常大的数组之间差异的有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354320/

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