【问题标题】:Use max_by in Ruby to find the key for the maximum number in a hash在 Ruby 中使用 max_by 查找哈希中最大数的键
【发布时间】:2018-01-31 06:04:46
【问题描述】:

我需要在数组中找到拥有“最大”权重的类别。我在环境变量中定义权重:

CATEGORY_WEIGHTS = {
  "small_standard": 0,
  "large_standard": 1,
  "small_oversize": 2,
  "medium_oversize": 3,
  "large_oversize": 4
}

在本例中,“最大”加权类别为large_oversize

我正在检查的数组如下所示:

categories = [
  "small_oversize",
  "large_standard",
  "small_standard",
  "large_oversize"
]

但是当我这样做时,它不会返回正确的值:

max_category = categories.max_by{ |cat| CATEGORY_WEIGHTS[cat] }

它返回small_oversize 而不是large_oversize

我误入歧途了?

【问题讨论】:

  • 在哈希声明中,"x": y 变为 :x => y。对于实际的字符串键:"x" => y.

标签: ruby-on-rails arrays ruby dictionary max


【解决方案1】:

您在哈希中使用符号,但您尝试使用字符串访问它。将其更改为:

max_category = categories.max_by{|cat| CATEGORY_WEIGHTS[cat.to_sym]}

以下是您可以更简单的方法:

category_weights = {
  small_standard: 0,
  large_standard: 1,
  small_oversize: 2,
  medium_oversize: 3,
  large_oversize: 4
}

category = category_weights.max_by{|c, w| w}[0]

【讨论】:

  • 是的,完美。谢谢!我会在允许的时候接受答案!
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
相关资源
最近更新 更多