如何在 Ruby 中获取哈希的最大 100 个值?

  • 本文关键字:个值 哈希 Ruby 获取 ruby
  • 更新时间 :
  • 英文 :


我的任务是返回 Ruby 中哈希的前 100 个值。我想避免使用.sort_by,因为它对于大型集合来说会很慢,并且更愿意先获取前 100 个哈希值,然后再排序。你会如何处理这个问题?

假设我们有以下哈希值,其中包含 10,000 个键和随机生成的值:

N = 10_000
M = 25_000
h = N.times.with_object({}) { |i,h| h[i] = rand(M) }
#=> { 0=>23644, 1=>5008, 2=>22792, 3=>3700, 4=>6828,
#     ...
#     9995=>2240, 9996=>7923, 9997=>23223, 9998=>11945, 9999=>17913 }    

h的最大 100 个值按如下方式获得:

h.values.max(100)
#=> [24999, 24998, 24997, 24996, 24995, 24991, 24985, 24985, 24983, 24977,
#    24975, 24972, 24972, 24969, 24969, 24963, 24963, 24958, 24958, 24956,
#    ...
#    24801, 24799, 24798, 24798, 24795, 24794, 24785, 24782, 24778, 24778]

参见(第三种形式(数组#max。

最新更新