比较RUBY中数组的键 [英] Compare keys of array in RUBY

查看:75
本文介绍了比较RUBY中数组的键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的结构:

$ArrayX = [8349310431,8349314513,......]
$ArrayY = [667984788,667987788,......]
$ArrayZ = [148507632380,153294624079,.....]

$range_map = $ArrayX.zip([$ArrayY.map(&:to_i), 
             $ArrayZ.map(&:to_i)].transpose).sort

puts $range_map ={[8349310431=>[667984788, 148507632380],  
                 8349314513=>[667987788, 153294624079]}

我需要将该键与其余键进行比较,如果键之间的减法值小于100,则需要打印该键

I need the key to be compared with the rest of the keys and if the subtraction between keys is lower than 100, that key to print

推荐答案

我也根据您的需要更正了您的代码,并进一步解决了该问题,

I corrected your code also as per your need, and solved further,

$ArrayX = [8349310431,8349314513]
$ArrayY = [667984788,667987788]
$ArrayZ = [148507632380,153294624079]

$range_map = $ArrayX.zip([$ArrayY.map(&:to_i), $ArrayZ.map(&:to_i)].transpose).sort

$ArrayX = [8349310431,8349314513]
 => [8349310431, 8349314513]
$ArrayY = [667984788,667987788]
 => [667984788, 667987788]
$ArrayZ = [148507632380,153294624079]
 => [148507632380, 153294624079] 

$range_map = Hash[$ArrayX.zip([$ArrayY.map(&:to_i), $ArrayZ.map(&:to_i)].transpose).sort]
 => {8349310431=>[667984788, 148507632380], 8349314513=>[667987788, 153294624079]}

keys = $range_map.keys
valid_keys = keys.select { |k| keys.detect { |x| (x-k).abs > 100 } }
$range_map.slice(*valid_keys)

如果特定键与其余键之一的差异大于100,则可以进行过滤.

If particular key is having difference more than 100 with one of rest of keys then it will be valid for filtering.

这篇关于比较RUBY中数组的键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆