Yanıtlar:
Bu, karma öğelerin değerine bağlı olarak maksimum karma anahtar / değer çifti döndürür:
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
Bu şekilde buldum, ilk maksimum değerin anahtarını döndür
hash.key(hash.values.max)
Başka bir yol aşağıdaki gibi olabilir:
hash.each { |k, v| puts k if v == hash.values.max }
Bu, her bir anahtar / değer çifti üzerinden geçer ve değerin tüm değerlerin maksimumuna eşit olduğu anahtarları döndürür (veya bu durumda koyar). Beraberlik varsa bu birden fazla anahtar döndürmelidir.
Sıraya göre (ikinci en büyük, en küçük vb.) Birden fazla anahtar değer çifti almak istiyorsanız, daha etkili bir yol, karmayı bir kez sıralamak ve ardından istenen sonuçları elde etmek olacaktır.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
En büyük değerin anahtarı
puts *hash[0][0]
Max ve min alın
puts *hash[0], *hash[hash.length-1]
2. en büyük anahtar değer çifti
Hash[*hash[1]]
Hash dizisini hash'e geri dönüştürmek için
hash.to_h
Bu, hash'in boyuta göre sıralanmış son anahtarını döndürür; ancak aynı değere sahip iki anahtar olabilir.
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)