У меня есть хеш, в котором id
- это ключ, а name
- это значение. Оба id and value are unique
.
Примерно так:
h[1] = "ABC"
h[3] = "DEF"
Итак, если мне дают ключ 1, я легко могу вернуть значение "ABC".
Мне нужно сделатьreverse lookup
, а это означает, что если мне присвоено значение "DEF", я должен вернуть 3.
Кроме того, вместо одного значения или одного ключа для поиска,
Iвместо этого может быть предоставлен массив значений или массив ключей.
Должен ли я реализовать два хэша, по одному для каждого, или есть какой-нибудь другой способ в рубине или рельсах для достижения этого?
Редактировать: Этот вопрос не связан с поиском ключа по значению в хэше. Это связано с выполнением двустороннего поиска не за O (n) времени с лучшим методом, кроме создания двух отдельных хешей.