【问题标题】:How do I find the hash value with the biggest key?如何找到具有最大键的哈希值?
【发布时间】:2017-06-20 02:07:25
【问题描述】:

我使用的是 Ruby 2.4。如何在哈希中找到具有最大键值的条目?我有这个哈希

a = {1 => [1, 2], 2 => [3, 4, 5]}

现在,我正在这样做

[a.keys.max, a[a.keys.max]]

但我认为有一种更巧妙的方法可以解决这个问题。

【问题讨论】:

  • 这有什么问题? a.max_by { |k, _v| k } 对你有用吗?

标签: ruby hash key max


【解决方案1】:

试试这个

k, v = hash.max_by { |key, value| key }

【讨论】:

  • ...或a.max_by(&:first)
  • 技术上是的。但它并没有传达意图。我们想按键排序。 first这里不透露意图,key和value的顺序是任意的。
  • 我不关注。我相信您知道,当哈希是可枚举方法的接收者时,哈希的每个键值对都作为数组以键值顺序传递给块,因此您的方法的这种变体产生结果相同。
  • 我正在讨论人为因素。英文单词first 并不意味着key,因此代码没有透露意图。那是“意图揭示”与“实施揭示”
【解决方案2】:

另外,#max 默认找到最大的key

> a = {1 => [1, 2], 6 => [-1], 3 => [0] }
> a.max
#=> [6, [-1]]

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2011-08-22
    • 2017-12-20
    • 2011-11-21
    • 2014-08-03
    相关资源
    最近更新 更多