标题说明了一切.
total = {"Bob"=>37, "Alice"=>42, "Carl"=>42}
Run Code Online (Sandbox Code Playgroud)
我想按值排序,然后按键排序,但按键降序排序.
像这样:
{"Bob"=>37, "Carl"=>42, "Alice"=>42}
Run Code Online (Sandbox Code Playgroud)
我试过了:
return total.sort_by { |k, v| [v, k] }
Run Code Online (Sandbox Code Playgroud)
但是从这里我不知道如何逆转k......
使用排序:
total = {"Bob"=>37, "Alice"=>42, "Carl"=>42}
total.sort { |(k1, v1), (k2, v2)| [v1, k2] <=> [v2, k1] }.to_h
# => {"Bob"=>37, "Carl"=>42, "Alice"=>42}
Run Code Online (Sandbox Code Playgroud)
首先,按值(v1 <=> v2)排序,然后按键(k2 <=> k1)反向排序,因为我们需要它同时将它放入数组中.
编辑:@ Mirror318,看起来很吓人,看看这里的优秀解释:什么是Ruby <=>(太空船)运营商?
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |