2015-02-05 140 views
-1

这里是一个哈希:按值返回键时多个值

cities = { 
    OR: ['Bend','Portland'], 
    CA: ['Los Angeles', 'Sandiego'], 
    WA: ['Seattle', 'Vancouver'], 
} 

我找一个值的元素返回的关键。当我用城市名称(值中的元素)进行搜索时,我想返回州的缩写(键)。

以下时value是乱码,而不是当它是一个值的元素的值仅适用于:

hash.key(value) 
+0

严格说起来,每个键只有一个值,但这里的值是一个数组本身有很多值,这就是为什么这不起作用:'Hash#key'不关心你的值是一个集合。 –

+1

你有设计缺陷。键和值应该是相反的方式。 – sawa

回答

2

您可以通过使用select找到问题的关键:

hash.select { |k, v| v.include? "Seattle" }.keys.first 
+0

可以使用'detect'来消除'keys'调用 - 如果一个城市只会被表示一次。 –