我需要能够匹配来自随机整数数组的数据,并将它们传递给特定大纲中的散列,同时将随机数据与定义的数据集进行匹配。
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
}
}
}
将密钥和值配对,消除密钥不在预定数据集中的那些,然后将键值对列表转换为散列。
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
)。