以相反的顺序对2-D哈希进行排序

时间:2010-04-27 18:00:39

标签: ruby sorting hash

我有一个2-d hash.I需要按降序对每个子哈希值进行排序。

hsh={"a"=>{0=>1, 1=>2}}

output= {"a"=>{1=>2,0=>1}}

谢谢&干杯!

2 个答案:

答案 0 :(得分:2)

你不能影响hashmap元素迭代或显示的顺序(在ruby 1.9中迭代(和显示)顺序保证与插入顺序相同,所以如果你从排序数组创建哈希,哈希也将被排序。)

您所能做的就是将哈希变成一个数组并对其进行排序。像:

hsh.map {|k,v| [k, v.sort.reverse]}
#=> [["a", [[1, 2], [0, 1]]]]

答案 1 :(得分:0)

哈希是UNORDERED系列。您无法设置自己的订单。

http://apidock.com/ruby/Hash

The order in which you traverse a hash by either key or value may seem arbitrary, and will generally not be in the insertion order.