ruby - 如何在 ruby​​ 中访问哈希值 [2] 的最小值

标签 ruby

如何在 Ruby 中访问哈希值中特定列的最小值或最大值

我有一个包含键值数组的散列。我想在数组值的特定列中获取最小值或最大值,以便我可以更改第一列的值。下面是我的代码。有什么建议吗?

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将遍历任何可枚举对象,例如哈希,以创建一个包含 block 参数指定值的数组。由于它会产生一个数组,因此您可以应用 .min:

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

哈希的枚举器包含键和值,但由于您的规范中不需要键,我使用了 _ 占位符。

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

关于ruby - 如何在 ruby​​ 中访问哈希值 [2] 的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57751190/

相关文章:

ruby - 什么是 Sinatra/Rack 的非常简单的身份验证方案

ruby - 在我的 Mac 上更新 gems - 安装了两个版本的 bundler

ruby-on-rails - `secret_token` 环境缺少 `secret_key_base` 和 'development',在 `config/secrets.yml` 中设置这些值

ruby - 如何将此算法从 Ruby 转换为 Clojure?

ruby - 按大写字母拆分字符串,但如果前面有空格则不拆分

ruby-on-rails - 如果是正数,则使用 "+"前缀数字 - Ruby/Rails 4

c - Ruby C 扩展 : rb_funcall causing segfault

ruby-on-rails - 用户模型中 twitter-login gem 的助手

ruby-on-rails - 升级到 Rails 5 的问题 - 在过滤器之前

ruby-on-rails - 将遗留数据迁移到 Rails 中的新模型