【发布时间】:2014-10-07 07:11:34
【问题描述】:
考虑一个哈希
my_hash = {"drsn"=>["on", "tw", "th"], "mhsh"=>["tw", "th", "fo"], "achu"=>["th", "fo", "fi"]}
我可以通过
对哈希进行排序Hash[my_hash.sort]
这会导致像这样的排序哈希
{"achu"=>["th", "fo", "fi"], "drsn"=>["on", "tw", "th"], "mhsh"=>["tw", "th", "fo"]}
但是谁能告诉我如何对 values 以及 key 进行排序?
喜欢
{"achu"=>["fi", "fo", "th"], "drsn"=>["on", "th", "tw"], "mhsh"=>["fo", "th", "tw"]}
我正在使用 ruby 2.0.0
我也试过sort_by
喜欢
Hash[my_hash.sort_by {|k,v| v.sort}]
但是得到了
{"achu"=>["th", "fo", "fi"], "mhsh"=>["tw", "th", "fo"], "drsn"=>["on", "tw", "th"]}
【问题讨论】:
-
您的示例值具有误导性。
-
@Stefan 你能告诉我你发现困难的地方吗?我会改变我的问题
-
["three", "four", "five"]未排序,["five", "four", "three"]已排序,看起来很奇怪。 -
你检查过 ["three", "four", "five"].sort 给你的回报了吗?据我所知,它按字母顺序对数组中的值进行排序。这就是我想要的。
-
@h.APP.y Stefan 是说表达数字的词(例如“三”、“四”……)暗示按数字排序,这会在你想要的时候产生误导根据不同的顺序(字典顺序)对单词进行排序。你用了不好的词作为例子。
标签: ruby sorting hash ruby-2.0