2017-02-02 68 views
1

我正在使用Ruby 2.4。我如何在最具鍵值的散列中找到條目?我有這個哈希如何找到最大密鑰的哈希值?

a = {1 => [1, 2], 2 => [3, 4, 5]} 

現在,我在做這個

[a.keys.max, a[a.keys.max]] 

但我想有拉這一關的巧妙方式。

+1

這有什麼錯呢? 'a.max_by {| k,_v | k}爲你工作? – radubogdan

回答

1

試試這個

k, v = hash.max_by { |key, value| key } 
+0

...或「a.max_by(&:first)」。 –

+0

技術上是。但它並沒有傳達意圖。我們想按鍵排序。 '第一個'在這裏沒有揭示任何意圖,鍵和值的順序是任意的。 – akuhn

+0

我不關注。我相信你知道,當一個散列是一個可枚舉方法的接收者時,散列中的每個鍵值對都以鍵值的順序作爲一個數組傳遞給該塊,所以你的方法的這個變體產生相同的結果。 –

0

此外,#max找到默認最大key

> a = {1 => [1, 2], 6 => [-1], 3 => [0] } 
> a.max 
#=> [6, [-1]]