hash.each {|k, v| puts k if v == hash.values.max }
Ini berjalan melalui setiap pasangan nilai kunci dan mengembalikan (atau dalam kasus ini menempatkan) kunci di mana nilainya sama dengan maks dari semua nilai. Ini harus mengembalikan lebih dari satu kunci jika ada seri.
Jika Anda ingin mengambil lebih dari satu pasangan nilai kunci berdasarkan urutan (terbesar kedua, terkecil, dll.), Cara yang lebih efisien adalah dengan mengurutkan hash satu kali dan kemudian mendapatkan hasil yang diinginkan.
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
Untuk Ruby yang kurang dari 2.3 Anda dapat menggantinya &.lastdengan .try(:last)
Salah satu yang hanya sebagai pengaman jika hash sumber Anda kosong:{}
jawaban yang dipilih? may_by jauh lebih baik daripada pengurutan tingkat rendah. Ini lebih kompak dan menggunakan lebih sedikit memori daripada semacam + terakhir.
Jawaban:
Ini akan mengembalikan pasangan nilai kunci hash tergantung pada nilai elemen hash:
sumber
Saya menemukan cara ini, kembalikan kunci dari nilai maks pertama
sumber
Cara lain bisa jadi sebagai berikut:
Ini berjalan melalui setiap pasangan nilai kunci dan mengembalikan (atau dalam kasus ini menempatkan) kunci di mana nilainya sama dengan maks dari semua nilai. Ini harus mengembalikan lebih dari satu kunci jika ada seri.
sumber
Anda dapat menggunakan metode pilih jika Anda ingin pasangan nilai kunci dikembalikan:
sumber
Jika Anda ingin mengambil lebih dari satu pasangan nilai kunci berdasarkan urutan (terbesar kedua, terkecil, dll.), Cara yang lebih efisien adalah dengan mengurutkan hash satu kali dan kemudian mendapatkan hasil yang diinginkan.
Kunci dengan nilai terbesar
Dapatkan maks dan min
Pasangan nilai kunci terbesar ke-2
Untuk mengubah array hash kembali menjadi hash
sumber
Saya melakukan ini hari ini pada masalah yang sama dan berakhir dengan ini:
Untuk Ruby yang kurang dari 2.3 Anda dapat menggantinya
&.last
dengan.try(:last)
Salah satu yang hanya sebagai pengaman jika hash sumber Anda kosong:{}
sumber
Ini akan mengembalikan kunci terakhir dari hash yang diurutkan berdasarkan ukuran; Namun, mungkin ada dua kunci dengan nilai yang sama.
sumber