【发布时间】:2011-05-19 09:08:48
【问题描述】:
这是对哈希进行排序并返回哈希对象(而不是数组)的最佳方法吗:
h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
# => {"a"=>1, "c"=>3, "b"=>2, "d"=>4}
Hash[h.sort]
# => {"a"=>1, "b"=>2, "c"=>3, "d"=>4}
【问题讨论】:
-
我不确定对哈希进行排序有多大好处,除非您使用
each或each_pair对其进行迭代。即使那样,我可能仍然会抓取键,对它们进行排序,然后根据需要遍历它们以获取值。这可确保代码在较旧的 Ruby 上正常运行。 -
在 ruby 1.9 中也有意义。我有一个约会集合,按日期(作为键)分组,来自 db,我通过 ruby 手动排序。例如。 { "2012-09-22": [...], "2012-09-30": [...], "2012-10-12": [...] }
-
是的,我发现您的 Hash[h.sort] 过程比排序键然后通过排序键再次访问哈希更有效。
-
您已经思考了几年的解决方案,您准备好接受答案了吗? ;-)