Risposte:
Questo restituirà la coppia chiave-valore hash max a seconda del valore degli elementi hash:
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
Ho trovato in questo modo, restituire la chiave del primo valore massimo
hash.key(hash.values.max)
Un altro modo potrebbe essere il seguente:
hash.each { |k, v| puts k if v == hash.values.max }
Questo attraversa ogni coppia chiave-valore e restituisce (o in questo caso inserisce) le chiavi in cui il valore è uguale al massimo di tutti i valori. Questo dovrebbe restituire più di una chiave se c'è un pareggio.
Se si desidera recuperare più di una coppia di valori chiave in base all'ordine (la seconda più grande, la più piccola ecc.), Un modo più efficiente sarà ordinare l'hash una volta e quindi ottenere i risultati desiderati.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
Chiave di maggior valore
puts *hash[0][0]
Ottieni max e min
puts *hash[0], *hash[hash.length-1]
Seconda coppia chiave-valore più grande
Hash[*hash[1]]
Per riconvertire l'array hash in un hash
hash.to_h
Questo restituirà l'ultima chiave dell'hash ordinata per dimensione; tuttavia, potrebbero esserci due chiavi con lo stesso valore.
def largest_hash_key(hash)
key = hash.sort{|a,b| a[1] <=> b[1]}.last
puts key
end
hash = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 }
largest_hash_key(hash)