বৃহত্তম মান হ্যাশটির কী কীভাবে সন্ধান করবেন?


110

আমার নীচের হ্যাশ আছে {"CA"=>2, "MI"=>1, "NY"=>1}

রুবি ব্যবহার করে কীভাবে আমি সর্বোচ্চ কী মান যুক্ত করতে পারি? আমি এটি "সিএ" ফিরিয়ে দিতে চাই


3
যদি একই বৃহত্তম মান সহ একাধিক কী থাকে?
গাবে

উত্তর:


230

এটি হ্যাশ উপাদানের মানের উপর নির্ভর করে সর্বাধিক হ্যাশ কী-মান জুটি ফেরত দেবে:

def largest_hash_key(hash)
  hash.max_by{|k,v| v}
end

49
আপনি [কী, মান] দিয়ে একটি 2 এলিমেন্ট অ্যারে ফিরে পাওয়ার মতো মূল্যবান
জাস্টিংর্ডন

6
hash.max_by {| কে, ভি | ভি} [0] কী দেয়।
nفر21

4
একটি টাই লক্ষণীয় মূল্য পজিশনের ক্রম প্রথম হবে।
রবি গিলফয়েলে

8
আপনি এই জোড়ার জন্য hash.max_by (&: সর্বশেষ) এবং hash.max_by (এবং: সর্বশেষ) করতে পারেন the
মাহেমফ


16

অন্য উপায় নিম্নলিখিত হিসাবে হতে পারে:

hash.each { |k, v| puts k if v == hash.values.max }

এটি প্রতিটি কী-মান জুটির মধ্য দিয়ে চলে এবং কী (গুলি এই ক্ষেত্রে রাখে) যেখানে মানটি সমস্ত মানের সর্বোচ্চের সমান। যদি টাই থাকে তবে এটি একের বেশি চাবিতে ফিরে আসে।


5

আপনি যদি মূল মানটি ফেরত চান তবে আপনি নির্বাচন পদ্ধতিটি ব্যবহার করতে পারেন:

hash.select {|k,v| v == hash.values.max }

4

যদি আপনি অর্ডার (দ্বিতীয় বৃহত্তম, ক্ষুদ্রতম ইত্যাদি) এর উপর ভিত্তি করে একাধিক কী মান জোড় পুনরুদ্ধার করতে চান তবে আরও কার্যকর উপায় হ্যাশটিকে একবার বাছাই করা এবং তারপরে পছন্দসই ফলাফলগুলি অর্জন করতে হবে।

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

1

আমি আজ একই ধরণের সমস্যার জন্য এটি করেছি এবং এটি দিয়ে শেষ করেছি:

hash = { "CA"=>2, "MI"=>1, "NY"=>1 }

hash.invert.max&.last
=> "CA" 

২.৩ এরও কম রুবির পক্ষে আপনি যে কোনওটির &.lastসাথে প্রতিস্থাপন করতে পারবেন .try(:last) যদি আপনার উত্স হ্যাশ খালি থাকে তবে এটির জন্য কেবলমাত্র একটি নিরাপদ রক্ষাকারী:{}


-3

এটি আকার অনুসারে বাছাই করা হ্যাশের শেষ কীটি ফিরিয়ে দেবে; তবে একই মান সহ দুটি কী থাকতে পারে।

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)

2
নির্বাচিত উত্তর? may_by নিম্ন স্তরের বাছাইয়ের চেয়ে অনেক ভাল is এটি আরও কমপ্যাক্ট এবং একটি বাছাই + শেষের চেয়ে কম মেমরি ব্যবহার করে।
টোকল্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.