我通常使用下面示例中给出的非常着名的sort
方法对ruby哈希进行排序。但是当字符串键中有下划线时,这种情况非常糟糕。例如:
h = {"b" => 1, "a" => 2}
Hash[h.sort]
完美地对哈希进行排序。但是当散列类似于
时h = {"b_d" => 1, "a_v" => 2}
我没有得到所需的排序顺序。这里要注意的是h.sort
对哈希进行排序并生成Enumerable
个对象。但是当我使用Hash[h.sort]
将对象转换回Hash时,它会丢失命令。任何有关更好的流程的建议都会有所帮助。
注意:我正在使用Ruby 1.8.7
,因此OrderedHash
在我的镜头中并不多。
答案 0 :(得分:2)
在Ruby 1.8.7中,只要您转换回Hash
,就必然会丢失订单。你必须摆脱香草Hash
才能让它发挥作用 - 也许试着保持Enumerable
你从sort
回来并尽可能长时间使用它?