如何找到最大哈希值的key?

发布于 2024-11-08 03:07:40 字数 102 浏览 0 评论 0原文

我有以下哈希 {"CA"=>2, "MI"=>1, "NY"=>1}

如何使用 ruby​​ 返回最大键值对?我希望它返回“CA”

I have the following hash {"CA"=>2, "MI"=>1, "NY"=>1}

How can I return the maximum key value pair using ruby? I would like it to return "CA"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

以往的大感动 2024-11-15 03:07:40

这将根据哈希元素的值返回最大哈希键值对:

def largest_hash_key(hash)
  hash.max_by{|k,v| v}
end

This will return max hash key-value pair depending on the value of hash elements:

def largest_hash_key(hash)
  hash.max_by{|k,v| v}
end
方觉久 2024-11-15 03:07:40

我发现这样,返回第一个最大值的键

hash.key(hash.values.max)

I found this way , return the key of the first max value

hash.key(hash.values.max)
攒一口袋星星 2024-11-15 03:07:40

另一种方式可能如下:

hash.each { |k, v| puts k if v == hash.values.max }

这会遍历每个键值对,并返回(或在本例中为 put)键,其中值等于所有值的最大值。如果存在平局,这应该返回多个键。

Another way could be as follows:

hash.each { |k, v| puts k if v == hash.values.max }

This runs through each key-value pair and returns (or in this case puts's) the key(s) where the value is equal to the max of all values. This should return more than one key if there's a tie.

离笑几人歌 2024-11-15 03:07:40

如果你想根据顺序检索多个键值对(第二大、最小等),一种更有效的方法是对哈希进行一次排序,然后得到所需的结果。

def descend_sort(hash)
   hash = hash.sort_by {|k,v| v}.reverse
end

最大值的键

puts *hash[0][0]

获取 max 和 min

puts *hash[0], *hash[hash.length-1]

第二大键值

Hash[*hash[1]]

对 将哈希数组转换回哈希

hash.to_h

If you want to retrieve more than one key value pair based on order(second largest, smallest etc.), a more efficient way will be to sort the hash once and then get the desired results.

def descend_sort(hash)
   hash = hash.sort_by {|k,v| v}.reverse
end

Key of largest value

puts *hash[0][0]

Get max and min

puts *hash[0], *hash[hash.length-1]

2nd largest key value pair

Hash[*hash[1]]

To convert the hash array back into a hash

hash.to_h
初吻给了烟 2024-11-15 03:07:40

我今天在类似的问题上做了这个,最终得到了这个:

hash = { "CA"=>2, "MI"=>1, "NY"=>1 }

hash.invert.max&.last
=> "CA" 

对于 Ruby 小于 2.3,你可以用 .try(:last) 替换 &.last
如果您的源哈希为空,其中任何一个都只是一种保护措施:{}

I did this today on a similar problem and ended up with this:

hash = { "CA"=>2, "MI"=>1, "NY"=>1 }

hash.invert.max&.last
=> "CA" 

For Ruby less than 2.3 you can replace &.last with .try(:last)
Either one is just a safeguard for if your source hash is empty: {}

世界等同你 2024-11-15 03:07:40

这将返回按大小排序的哈希的最后一个键;但是,可能有两个键具有相同的值。

def largest_hash_key(hash)
  key = hash.sort{|a,b| a[1] <=> b[1]}.last
  puts key
end

hash = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 }
largest_hash_key(hash)

This will return the last key of the hash sorted by size; however, there might be two keys with the same value.

def largest_hash_key(hash)
  key = hash.sort{|a,b| a[1] <=> b[1]}.last
  puts key
end

hash = { "n" => 100, "m" => 100, "y" => 300, "d" => 200, "a" => 0 }
largest_hash_key(hash)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文