2015-02-05 18 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'調用 - 如果一個城市只會被表示一次。 –