Ruby-查找哈希最大值的键

Ruby-查找哈希最大值的键,ruby,hash,max,Ruby,Hash,Max,我有一个散列,我想返回散列的最大值的键(或键/值对)。因此,如果只有一个真正的max,它将返回该键;但是,如果有多个具有相同值的键/值对,它将返回所有这些键。我如何在Ruby中实现这一点 my_hash.max_by {|k,v| v} #only returns one key/value pair 如果你想要所有的双,我会做如下的事情 max = my_hash.values.max Hash[my_hash.select { |k, v| v == max}] 单班轮: my_hash

我有一个散列,我想返回散列的最大值的键(或键/值对)。因此,如果只有一个真正的max,它将返回该键;但是,如果有多个具有相同值的键/值对,它将返回所有这些键。我如何在Ruby中实现这一点

my_hash.max_by {|k,v| v} #only returns one key/value pair

如果你想要所有的双,我会做如下的事情

max = my_hash.values.max
Hash[my_hash.select { |k, v| v == max}]
单班轮:

my_hash.reduce({}){|h,(k,v)| (h[v] ||= []) << k;h}.max

irb
> z = {:tree => 3, :two => 2, 'three' => 3}

>  z.reduce({}){|h,(k,v)| (h[v] ||= []) << k;h}.max
[3, [:tree, "three"]]
my|u hash.reduce({}){h,(k,v){(h[v]|}=[])z={:tree=>3,:two=>2,'twree'=>3}

>z.reduce({}){| h,(k,v)|(h[v]| |=[]))我猜这里回答的问题是相同的,你在散列中存储了什么类型的值?你只处理整数吗?@yasirhashmi是的,相同,只是我不想只返回一个,如果它们有相同的值,我想返回多个k/v对。@Amirubin键是字符串,值是浮动小数。为什么==?我想可能不是不要做你认为它能做的事。