2017-02-02 4 views
1

Ich benutze Ruby 2.4. Wie finde ich einen Eintrag in einem Hash mit dem größten Schlüsselwert? Ich habe diesen HashWie finde ich den Hash-Wert mit dem größten Schlüssel?

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

Gerade jetzt, ich bin diesen

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

zu tun, aber ich meine, es gibt einen Slicker Weg, dies zu ziehen aus.

+1

Was ist daran falsch? Ist 'a.max_by {| k, _v | k} 'Arbeit für dich? – radubogdan

Antwort

1

diese

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

... oder 'a.max_by (&: first)'. –

+0

Technisch ja. Es kommuniziert jedoch nicht Absicht. Wir wollen nach Schlüssel sortieren. "first" gibt hier keine Absicht preis, die Reihenfolge von Schlüssel und Wert ist beliebig. – akuhn

+0

Ich folge nicht. Wie Sie sicher wissen, wenn ein Hash der Empfänger einer aufzählbaren Methode ist, wird jedes Schlüssel/Wert-Paar des Hashs als Array an den Block in Schlüssel/Wert-Reihenfolge übergeben, so dass diese Variante Ihrer Methode das Ergebnis liefert gleiches Ergebnis. –

0

Versuchen Sie auch, #max die größte key standardmäßig finden:

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