ruby - 如何在ruby中访问哈希值[2]的最小值
问题描述
如何在 Ruby 中访问 Hash 中特定值列的最小值或最大值
我有一个带有键值数组的散列。我想在数组值的特定列中获取最小值或最大值,以便我可以更改第一列的值。下面是我的代码。有什么建议么?
lru_c()
当我运行这段代码时,我得到 0,即第三个哈希值中的最小值。我需要的是数组值的第 2 列中的最少值。即[6,2,9,4].min
。我想访问h[2]
最后一列中的最小值。
def lru_c()
h = Hash.new{|hsh,key| hsh[key] = [] }
h[1] = [0,0,6]
h[2] = [0,0,2]
h[3] = [0,0,9]
h[4] = [7,1,4]
puts h.values[2].min
end
解决方案
collect
将遍历任何可枚举(例如哈希)以创建包含块参数指定的值的数组。由于它产生一个数组,因此您可以应用.min
:
h.collect { |_, value| value[2] }.min
哈希的枚举器会同时列出键和值,但由于您的规范中不需要键,因此我使用了_
占位符。
如果某些值可能没有[2]
索引,则应更改.min
为.compact.min
.
推荐阅读
- ffmpeg - fluent-ffmpeg 使用复杂过滤器设置音频电平
- bash - Bash awk,打印并跳过某些行输出到另一个文本文件
- ruby - mongo ruby 潜水员 UUID 格式似乎与 uuid v4 不同?
- javascript - 使用javascript修改POS odoo中的删除订单功能
- laravel - 查询不检索今天的记录
- python-3.x - 使用 aiohttp 维护客户端 http 缓存
- json - 如何在 Angular 中使用 json 服务器获取 JSON 文件的最后一条记录?
- jquery - 使用 ajax 调用的 DataList(无法在 'Node' 上执行 'appendChild':新的子元素包含父元素)
- elasticsearch - centos 7服务器无法启动elasticsearch
- mysql - 使用 typeorm 在多列上排序