从作为另一个哈希值的哈希值中获取最大值?
getting the largest value from a hash that is the value of another hash?
我有一个散列,其键是日期时间,其值是散列,如下所示:
{datetime =>{"string0"=>int0, "string1"=>int1}}
父散列中的每个值都具有相同的格式 - 相同的 2 个字符串作为键,整数作为值。我如何在整个哈希中找到最大的 int0
?
hash = {:foo =>{"string0"=>1, "string1"=>2}, :bar => {"string0"=>3, "string1"=>4}}
Hash[*hash.max_by { |_k, v| v['string0'] }]
#=> {:bar=>{"string0"=>3, "string1"=>4}}
获取实际值:
hash.map { |_k, v| v['string0'] }.max
#=> 3
h = {:foo =>{"string0"=>1, "string1"=>2},
:bar => {"string0"=>3, "string1"=>4, "string5"=>1} }
h.values.flat_map { |g| g.values_at("string0") }.max
#=> 3
步骤如下
a = h.values
#=> [{"string0"=>1, "string1"=>2}, {"string0"=>3, "string1"=>4, "string5"=>1}]
b = a.flat_map { |g| g.values_at("string0") }
#=> [1, 3]
b.max
#=> 3
我有一个散列,其键是日期时间,其值是散列,如下所示:
{datetime =>{"string0"=>int0, "string1"=>int1}}
父散列中的每个值都具有相同的格式 - 相同的 2 个字符串作为键,整数作为值。我如何在整个哈希中找到最大的 int0
?
hash = {:foo =>{"string0"=>1, "string1"=>2}, :bar => {"string0"=>3, "string1"=>4}}
Hash[*hash.max_by { |_k, v| v['string0'] }]
#=> {:bar=>{"string0"=>3, "string1"=>4}}
获取实际值:
hash.map { |_k, v| v['string0'] }.max
#=> 3
h = {:foo =>{"string0"=>1, "string1"=>2},
:bar => {"string0"=>3, "string1"=>4, "string5"=>1} }
h.values.flat_map { |g| g.values_at("string0") }.max
#=> 3
步骤如下
a = h.values
#=> [{"string0"=>1, "string1"=>2}, {"string0"=>3, "string1"=>4, "string5"=>1}]
b = a.flat_map { |g| g.values_at("string0") }
#=> [1, 3]
b.max
#=> 3