ruby - 如何对具有最高特定值的哈希进行排序?

标签 ruby arrays sorting hash enums

我在名为 elem 的数组内有哈希值,并且我必须获取具有最高“count”值的“type”键。

我知道枚举器是一件很棒的事情,但我不太了解它们。

elem = [{"type"=>"dododo", "count"=>0, "name"=>"dododo's", "tip"=>"dododo's Level"},
  {"type"=>"dadada", "count"=>1203, "name"=>"dadada's", "tip"=>"dadada's Degree"},
  {"type"=>"dedede", "count"=>717, "name"=>"dedede's", "tip"=>"dedede's Degree"},
  {"type"=>"dididi", "count"=>6, "name"=>"dididi's", "tip"=>"dididi or Professional Degree"}]

我正在尝试这个:

elem.each do |i|
  i.each_with_index do |k,v|
    puts v["count"]
  end
end

但我知道我错过了一些步骤。

我知道这种“策略”相当常见并且了解很重要。

最佳答案

一种方法是使用 Enumerable#max_by

elem = [
  {"type"=>"dododo", "count"=>0, "name"=>"dododo's", "tip"=>"dododo's Level"},
  {"type"=>"dadada", "count"=>1203, "name"=>"dadada's", "tip"=>"dadada's Degree"},
  {"type"=>"dedede", "count"=>717, "name"=>"dedede's", "tip"=>"dedede's Degree"},
  {"type"=>"dididi", "count"=>6, "name"=>"dididi's", "tip"=>"dididi or Professional Degree"}
]

max_elem = elem.max_by {|e| e['count']}
puts max_elem['type']
# returns dadada

关于ruby - 如何对具有最高特定值的哈希进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440415/

相关文章:

python - 在不知道键/值的情况下对字典列表进行排序

ruby - 如何将一个数组变成哈希的键,将另一个数组变成同一个哈希的值?

iphone - 我是否需要 RubyCocoaBridge 或 MacRuby 或两者都需要用 Ruby 为 iPad 开发?

java - java.util.Arrays 如何处理 ArrayList 的排序(长度与大小)?

sql - 按子记录数排序父记录

Java 排序 map 或列表

ruby-on-rails - 无法在 Rails 中覆盖 Devise::RegistrationsController 吗?

用于条件表达式的 Ruby 正则表达式

C:生成具有范围内随机数的数组(允许重复)

javascript - 使用 typescript/javascript 将数组拆分为组