在Ruby中查找散列中值的位置

oxcyiej7  于 2023-01-30  发布在  Ruby
关注(0)|答案(1)|浏览(127)

我有一个哈希表,我想知道用户什么时候给了一个值,这个值是在列表中的目标键之后还是之前。

my_list = {
key1 => value1,
key2 => value2,
key3 => value3,
key4 => value4
}

然后用户选择key2,然后它有一个已选择的目标键,假设为key3
因此,我的函数将检查key2是在目标键之前还是之后,在本例中是key3
如果它是一个数组,我会检查值是哪个索引。但是在散列中,我不确定该怎么做。

bgibtngc

bgibtngc1#

您可以创建一个简单的序列查找表,几乎不费吹灰之力:

MY_LIST = {
  start: 'Start',
  middle: 'Middle?',
  end: 'End!'
}

MY_LIST_SEQ = MY_LIST.keys.each_with_index.to_h

现在你有了这样的东西:

{:start=>0, :middle=>1, :end=>2}

这意味着您可以执行以下操作:

if MY_LIST_SEQ[a] > MY_LIST_SEQ[b]
  # ...
end

不需要使用线性扫描每次你想查找的东西。

相关问题