按键的升序对具有重复值的散列进行排序

时间:2014-07-06 11:10:48

标签: ruby hash

我有一个看起来像这样的哈希:

{"P1"=>108, "P6"=>50, "P3"=>50, "P5"=>40, "P2"=>40, "P4"=>40}

这已按值的降序排序。

我想要下面的输出,其中保持原始排序(按值降序),但具有相同值的元素按键的升序排序(例如,P3在{{1}之前出现})。

P6

任何以简单方式接近这一点的指示都会有所帮助。

1 个答案:

答案 0 :(得分:1)

对于排序的多个条件,请使用数组。

{"P1"=>108, "P6"=>50, "P3"=>50, "P5"=>40, "P2"=>40, "P4"=>40}
.sort_by{|k, v| [-v, k]}.to_h