首页 > 解决方案 > 如何在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

标签: ruby

解决方案


collect将遍历任何可枚举(例如哈希)以创建包含块参数指定的值的数组。由于它产生一个数组,因此您可以应用.min

h.collect { |_, value| value[2] }.min

哈希的枚举器会同时列出键和值,但由于您的规范中不需要键,因此我使用了_占位符。

如果某些值可能没有[2]索引,则应更改.min.compact.min.


推荐阅读