hash.each {|k, v| puts k if v == hash.values.max }
Dies durchläuft jedes Schlüssel-Wert-Paar und gibt die Schlüssel zurück (oder setzt sie in diesem Fall), wobei der Wert gleich dem Maximum aller Werte ist. Dies sollte mehr als einen Schlüssel zurückgeben, wenn es ein Unentschieden gibt.
Wenn Sie mehr als ein Schlüsselwertpaar basierend auf der Reihenfolge (zweitgrößte, kleinste usw.) abrufen möchten, ist es effizienter, den Hash einmal zu sortieren und dann die gewünschten Ergebnisse zu erhalten.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
Schlüssel mit dem größten Wert
puts *hash[0][0]
Holen Sie sich max und min
puts *hash[0],*hash[hash.length-1]
Zweitgrößtes Schlüsselwertpaar
Hash[*hash[1]]
So konvertieren Sie das Hash-Array wieder in einen Hash
ausgewählte Antwort? may_by ist viel besser als eine Sortierung auf niedriger Ebene. Es ist kompakter und benötigt weniger Speicher als eine Sortierung + Leiste.
Antworten:
Dies gibt je nach Wert der Hash-Elemente ein maximales Hash-Schlüssel-Wert-Paar zurück:
quelle
Ich habe auf diese Weise den Schlüssel des ersten Maximalwerts zurückgegeben
quelle
Ein anderer Weg könnte wie folgt sein:
Dies durchläuft jedes Schlüssel-Wert-Paar und gibt die Schlüssel zurück (oder setzt sie in diesem Fall), wobei der Wert gleich dem Maximum aller Werte ist. Dies sollte mehr als einen Schlüssel zurückgeben, wenn es ein Unentschieden gibt.
quelle
Sie können die select-Methode verwenden, wenn das Schlüsselwertpaar zurückgegeben werden soll:
quelle
Wenn Sie mehr als ein Schlüsselwertpaar basierend auf der Reihenfolge (zweitgrößte, kleinste usw.) abrufen möchten, ist es effizienter, den Hash einmal zu sortieren und dann die gewünschten Ergebnisse zu erhalten.
Schlüssel mit dem größten Wert
Holen Sie sich max und min
Zweitgrößtes Schlüsselwertpaar
So konvertieren Sie das Hash-Array wieder in einen Hash
quelle
Ich habe dies heute bei einem ähnlichen Problem getan und bin zu folgendem Ergebnis gekommen:
Ruby weniger als 2,3 können Sie ersetzen
&.last
mit.try(:last)
Entweder man ist nur ein Schutz für die, wenn Ihre Quelle Hash leer ist :{}
quelle
Dies gibt den letzten Schlüssel des Hashs zurück, sortiert nach Größe. Möglicherweise gibt es jedoch zwei Schlüssel mit demselben Wert.
quelle