如何在Ruby中按数值对哈希进行排序而不转换为数组?

sly*_*lyv 3 ruby sorting hash

我有一个哈希:{"spider" => 213, "frog" => 128, "apple" => 812}.

如何重新排序,以便按降序对值进行排序而不将其转换为数组?因此,将其更改为{"apple" => 812, "spider" => 213, "frog" => 128}不进入数组.

我试过了.sort_by,但是把它转换成了一个数组.

Mic*_*ohl 5

在Ruby 1.9中," Hashes按照插入相应键的顺序枚举它们的值 ",所以只需确保以正确的方式插入它们:

Hash[h.sort_by { |_, v| -v }]
#=> > {"apple"=>812, "spider"=>213, "frog"=>128}
Run Code Online (Sandbox Code Playgroud)

  • `sort_by`来自`Enumerable`,`Hash`es确实包含了mixin.这基本上做hash - > array - > hash,确保按正确的顺序插入键. (2认同)