উত্তর:
এটি হ্যাশ উপাদানের মানের উপর নির্ভর করে সর্বাধিক হ্যাশ কী-মান জুটি ফেরত দেবে:
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
আমি এইভাবে খুঁজে পেয়েছি, প্রথম সর্বোচ্চ মানটির কীটি ফিরিয়ে দিন
hash.key(hash.values.max)
অন্য উপায় নিম্নলিখিত হিসাবে হতে পারে:
hash.each { |k, v| puts k if v == hash.values.max }
এটি প্রতিটি কী-মান জুটির মধ্য দিয়ে চলে এবং কী (গুলি এই ক্ষেত্রে রাখে) যেখানে মানটি সমস্ত মানের সর্বোচ্চের সমান। যদি টাই থাকে তবে এটি একের বেশি চাবিতে ফিরে আসে।
যদি আপনি অর্ডার (দ্বিতীয় বৃহত্তম, ক্ষুদ্রতম ইত্যাদি) এর উপর ভিত্তি করে একাধিক কী মান জোড় পুনরুদ্ধার করতে চান তবে আরও কার্যকর উপায় হ্যাশটিকে একবার বাছাই করা এবং তারপরে পছন্দসই ফলাফলগুলি অর্জন করতে হবে।
def descend_sort(hash)
hash = hash.sort_by {|k,v| v}.reverse
end
বৃহত্তম মানের কী
puts *hash[0][0]
সর্বোচ্চ এবং সর্বনিম্ন পান
puts *hash[0], *hash[hash.length-1]
২ য় বৃহত্তম বৃহত্তম মান জোড়
Hash[*hash[1]]
হ্যাশ অ্যারেটিকে আবার হ্যাশে রূপান্তর করতে
hash.to_h
আমি আজ একই ধরণের সমস্যার জন্য এটি করেছি এবং এটি দিয়ে শেষ করেছি:
hash = { "CA"=>2, "MI"=>1, "NY"=>1 }
hash.invert.max&.last
=> "CA"
২.৩ এরও কম রুবির পক্ষে আপনি যে কোনওটির &.last
সাথে প্রতিস্থাপন করতে পারবেন .try(:last)
যদি আপনার উত্স হ্যাশ খালি থাকে তবে এটির জন্য কেবলমাত্র একটি নিরাপদ রক্ষাকারী:{}
এটি আকার অনুসারে বাছাই করা হ্যাশের শেষ কীটি ফিরিয়ে দেবে; তবে একই মান সহ দুটি কী থাকতে পারে।
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)