首页 > 解决方案 > id vs name ruby​​ 的两种方式查找

问题描述

我有一个散列,其中id是键,name是值。两者id and value are unique

像这样的东西:

h[1] = "ABC"
h[3] = "DEF"

所以,如果给我 1 的键,我可以很容易地返回一个值“ABC”。

我也需要这样做reverse lookup,这意味着如果给我一个“DEF”的值,我应该返回 3。

此外,代替单个值或单个键来进行查找,
我可能会被提供一个值数组或键数组。

我应该实现两个哈希,每个一个,还是在 ruby​​ 或 rails 中有任何其他方式来实现这一点?

编辑:这个问题与通过哈希值查找键无关。它与不是在 O(n) 时间内使用更好的方法而不是创建两个单独的哈希值进行双向查找有关。

标签: ruby-on-railsruby

解决方案


您可以通过以下方式获取密钥: hash.key(value) => key Hash#key

h = { 1 => 'ABC', 3 => 'DEF' }
puts h.key('DEF')
#=> 3

推荐阅读