Ruby 对 Hash 按 key 进行排序

当然,Ruby 中的 Hash 和集合 Set 类似,都是没有所谓顺序的,默认是按照数据插入的先后顺序来排列的。但是你肯定有过这样的需求:怎么让 Ruby 中的 Hash 按照键的顺序重新排列得到新的 Hash 呢?下面就给你展示一下吧!

[5] pry(main)> temp = {}
=> {}
[6] pry(main)> temp["ninjas"]=36
=> 36
[7] pry(main)> temp["pirates"]=12
=> 12
[8] pry(main)> temp["cheese"]=222
=> 222
[9] pry(main)> temp
=> {"ninjas"=>36, "pirates"=>12, "cheese"=>222}

[10] pry(main)> temp.sort_by { |key, val| key }
=> [["cheese", 222], ["ninjas", 36], ["pirates", 12]]
[11] pry(main)> temp.sort_by { |key, val| key }.to_h
=> {"cheese"=>222, "ninjas"=>36, "pirates"=>12}

[12] pry(main)> temp.sort.to_h
=> {"cheese"=>222, "ninjas"=>36, "pirates"=>12}

友情提示:如果你的 Hash 特别特别大,而且你对排序的需求并不是十分强烈的话,不建议这么折腾哟(资源消耗和时间浪费都会很严重)。

你可能感兴趣的:(Ruby,hash,排序)