ruby - 如何在 Ruby 中获得最大 100 个哈希值?
问题描述
我的任务是返回 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 }
的最大 100 个值h
如下获得:
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]
请参见Array#max的(第三种形式)。
推荐阅读
- wiremock - 在存根的 json 文件中生成当前日期
- c++ - 如何将这些 OpenGL 着色器转换为适用于 android NDK 的 GLES3 的 OpenGL ES 着色器?
- php - Laravel Eloquent 中的控制器方法问题
- c# - 从手机到 PC C# Xamarin.Forms 的蓝牙连接
- java - 当方向改变时保持价值
- ios - 如何为不同的屏幕设置自动大小文本
- python - 如何在没有实例的情况下引用父类的类变量
- javascript - 使用 jquery 更改单击的 div 内的锚标记的 css
- angular - 如何更新 Observable
Angular 中的价值 - c# - 当用户单击注册按钮时,如何将我的用户重定向到“主页”页面?