我有以下哈希{"CA"=>2, "MI"=>1, "NY"=>1}如何使用ruby返回最大键值对?我希望它返回“CA”
{"CA"=>2, "MI"=>1, "NY"=>1}
bq8i3lrv1#
这将根据哈希元素的值返回最大哈希键值对:
def largest_hash_key(hash) hash.max_by{|k,v| v} end
字符串
pvcm50d12#
我发现这样,返回第一个max值的键
hash.key(hash.values.max)
ldxq2e6h3#
另一种方式可以如下:
hash.each { |k, v| puts k if v == hash.values.max }
字符串这将遍历每个键值对,并返回(或在本例中为puts)值等于所有值的最大值的键。如果有平局,这应该返回多个键。
wljmcqd84#
如果你想根据顺序检索多个键值对(第二大、最小等),更有效的方法是对哈希排序一次,然后得到所需的结果。
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
型
tag5nh1u5#
如果希望返回键值对,可以使用select方法:
hash.select {|k,v| v == hash.values.max }
ctehm74n6#
我今天在一个类似的问题上做了这个,结果是这样的:
hash = { "CA"=>2, "MI"=>1, "NY"=>1 } hash.invert.max&.last => "CA"
字符串对于小于2.3的Ruby,可以将&.last替换为.try(:last),其中任何一个都只是为了防止源哈希为空:{}个
&.last
.try(:last)
{}
kh212irz7#
所提供的答案假设会有single largest value。但是,它可以具有副本。要返回最大值的键(包括任何重复项),可以使用以下方法之一:
Hash#each
# 1: using `Enumerable#select` def max_value_keys(hash) max_value = hash.values.max max_values = hash.select { | key, value | value == max_value } max_values.keys end print max_value_keys({ a: 20, b: 50, c: 30 }) #=> [:b] print max_value_keys({ a: 20, b: 50, c: 50 }) #=> [:b, :c]
个字符写了一个blog post为那些有兴趣了解更多。
4szc88ey8#
这将返回按大小排序的哈希的最后一个键;然而,可能存在具有相同值的两个键。
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)
8条答案
按热度按时间bq8i3lrv1#
这将根据哈希元素的值返回最大哈希键值对:
字符串
pvcm50d12#
我发现这样,返回第一个max值的键
字符串
ldxq2e6h3#
另一种方式可以如下:
字符串
这将遍历每个键值对,并返回(或在本例中为puts)值等于所有值的最大值的键。如果有平局,这应该返回多个键。
wljmcqd84#
如果你想根据顺序检索多个键值对(第二大、最小等),更有效的方法是对哈希排序一次,然后得到所需的结果。
字符串
最大值键
型
获取max和min
型
第二大键值对
型
将哈希数组转换回哈希
型
tag5nh1u5#
如果希望返回键值对,可以使用select方法:
字符串
ctehm74n6#
我今天在一个类似的问题上做了这个,结果是这样的:
字符串
对于小于2.3的Ruby,可以将
&.last
替换为.try(:last)
,其中任何一个都只是为了防止源哈希为空:{}
个kh212irz7#
所提供的答案假设会有single largest value。但是,它可以具有副本。要返回最大值的键(包括任何重复项),可以使用以下方法之一:
Hash#each
个个字符
写了一个blog post为那些有兴趣了解更多。
4szc88ey8#
这将返回按大小排序的哈希的最后一个键;然而,可能存在具有相同值的两个键。
字符串