【发布时间】: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 2.4。如何在哈希中找到具有最大键值的条目?我有这个哈希
a = {1 => [1, 2], 2 => [3, 4, 5]}
现在,我正在这样做
[a.keys.max, a[a.keys.max]]
但我认为有一种更巧妙的方法可以解决这个问题。
【问题讨论】:
a.max_by { |k, _v| k } 对你有用吗?
试试这个
k, v = hash.max_by { |key, value| key }
【讨论】:
a.max_by(&:first)。
first这里不透露意图,key和value的顺序是任意的。
first 并不意味着key,因此代码没有透露意图。那是“意图揭示”与“实施揭示”
另外,#max 默认找到最大的key:
> a = {1 => [1, 2], 6 => [-1], 3 => [0] }
> a.max
#=> [6, [-1]]
【讨论】: