【问题标题】:Compare keys of array in RUBY比较 RUBY 中数组的键
【发布时间】:2019-04-16 23:17:38
【问题描述】:

我有这个结构:

$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,则打印该键

【问题讨论】:

  • 不要将$ 用于变量,提供正确的数组(目前它们是空的),提供正确的输出(它目前是散列中的数组,这不起作用)。跨度>
  • 您的$range_map 是一个数组,而不是一个哈希。目前还不清楚您期望的输出是什么。如果您提供Minimal, Complete and Verifiable Example,您将收到正确的答复。
  • 请不要在您的问题标题中添加不必要的评论。如果你真的觉得有必要为标题道歉,那么你没有花足够的时间深思熟虑,应该在提交问题之前放慢速度。请阅读stackoverflow.com/help/how-to-ask 了解有关有效头衔的更多信息。

标签: ruby hash


【解决方案1】:

我还根据您的需要更正了您的代码,并进一步解决了,

$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,则它将有效过滤。

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多