返回具有重复值的哈希的最小值

Chr*_*Lai 2 ruby

例如,如果我有哈希{"a" => 1, "b" => 2, "c" => 1},我想要["a", "c"].

我能做到hash.min_by{|k,v| v},但只返回第一个匹配("a"=>1).

如何让它识别重复并返回{"a"=> 1, "c"=> 1}?

Ry-*_*Ry- 7

这个操作对于哈希来说有点不寻常,所以它不是很整洁:

min_value = hash.values.min
min_pairs = hash.select { |k, v| v == min_value }
Run Code Online (Sandbox Code Playgroud)


saw*_*awa 5

{"a" => 1, "b" => 2, "c" => 1}.group_by(&:last).min.last.map(&:first)
# => ["a", "c"]
Run Code Online (Sandbox Code Playgroud)

或者

{"a" => 1, "b" => 2, "c" => 1}.group_by(&:last).min.last.to_h.keys
# => ["a", "c"]
Run Code Online (Sandbox Code Playgroud)