ruby-on-rails - id 与 name ruby​​ 的两种查找方式

标签 ruby-on-rails ruby

我有一个散列,其中 id 是键,name 是值。 id 和 value 都是唯一的

像这样:

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

所以,如果我得到 key 1,我可以很容易地返回一个值“ABC”。

我还需要做一个反向查找,这意味着如果我得到一个值“DEF”,我应该返回 3。

此外,不是使用单个值或单个键来进行查找,
我可能会得到一个值数组或键数组。

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

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

最佳答案

您可以使用 Hash#invert如下所示,

reversed_h = h.invert

reversed_h['DEF']
# => 3

关于ruby-on-rails - id 与 name ruby​​ 的两种查找方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58520813/

相关文章:

ruby-on-rails - Rails button_to 在指定 post 时使用 get 请求

mysql - Ruby on Rails - 任何性能诊断工具?

ruby - 无方法错误 : undefined method `except' for Hash

ruby - 使用陷阱在 ruby​​ 中 fork 回调

ruby-on-rails - 如何向 link_to 外部 URL 添加参数?

ruby-on-rails - Rails(或 Ruby): Yes/No instead of True/False

ruby-on-rails - Rails 3 或 arel 链/有条件合并 SQL 条件

ruby - 如何包含页面特定的 JavaScript?

ruby-on-rails - 无法在服务器上启动 ruby​​ on rails 应用程序但在本地工作,错误的环境路径

html - 如何在注册前提交 Rails 表单