我有一个哈希表,我想知道用户什么时候给了一个值,这个值是在列表中的目标键之后还是之前。
my_list = { key1 => value1, key2 => value2, key3 => value3, key4 => value4 }
然后用户选择key2,然后它有一个已选择的目标键,假设为key3因此,我的函数将检查key2是在目标键之前还是之后,在本例中是key3。如果它是一个数组,我会检查值是哪个索引。但是在散列中,我不确定该怎么做。
key2
key3
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
不需要使用线性扫描每次你想查找的东西。
1条答案
按热度按时间bgibtngc1#
您可以创建一个简单的序列查找表,几乎不费吹灰之力:
现在你有了这样的东西:
这意味着您可以执行以下操作:
不需要使用线性扫描每次你想查找的东西。