如何查找值最多的哈希的键

4 ruby arrays hash max

我正在使用Ruby 2.4.

我有一个哈希,其键是一个数字,其值是一个元素数组.如何使用具有最多元素的值在哈希中找到键?我知道,如果我的价值是一个数字,我可以这样做:

my_hash.max_by { |k, v| v }
Run Code Online (Sandbox Code Playgroud)

但由于该值是一个数组,我不知道如何告诉上面使用数组中的元素数量应该是最大值.

Eri*_*nil 7

max_by 是正确的方法:

my_hash = { a: [1, 2], b: [1, 2, 3], c: [5] }

key, longest_array = my_hash.max_by{ |k, array| array.size }

p key
#=> :b

p longest_array
#=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

您只需指定比较应该在哪个对象上.在这种情况下,数组值的大小.

您可能需要先添加一些检查:这仅在所有哈希值都响应时才有效:size.