将数据集与预定义数据集进行匹配,并将其存储为哈希格式

问题描述 投票:0回答:1

我需要能够匹配来自随机整数数组的数据,并将它们传递给特定大纲中的散列,同时将随机数据与定义的数据集进行匹配。

empty = {}
defined = [1,2,17,34,3,18,17]
dataset_one = [1,0,17]
dataset_two = [3,18,2,4]


desired = { 1 => 3, 17 => 2}

这是我到目前为止:

defined.each{ |item| 
  dataset_one.each{ |key|
   if item == key
    empty[key] = nil
   end
  dataset_two.each{ |value|
   if item = value 
   empty[key] = value
   }
  }
}
ruby-on-rails ruby loops hash
1个回答
1
投票

将密钥和值配对,消除密钥不在预定数据集中的那些,然后将键值对列表转换为散列。

dataset_one.zip(dataset_two).select { |k, v| defined.include?(k) }.to_h
# => {1=>3, 17=>2}

从问题中不清楚是否需要检查defined的键和值;如果是这样,修改是微不足道的:

dataset_one.zip(dataset_two).select { |k, v|
  defined.include?(k) && defined.include?(v)
}.to_h

如果速度很重要,你可能想把你的一些东西变成集合(尤其是defined)。

© www.soinside.com 2019 - 2024. All rights reserved.