编辑:我的错!!!问题解决了(我在ruby 1.8上测试了这个,在ruby 1.9上按预期工作)
我有一个现有的哈希,并希望对它进行排序,以便所有键都按数字顺序排列。
a = {4 => 5, 8 => 20, 3 => 2, 6 => 1, 7 => 10, 2 => 1 }
=> #Wanted Newhash = {2 => 1, 3 => 2, 4 => 5, 6 => 1, 7 => 10, 8 => 20 }
这是我做的:
b = a.keys.sort => [2,3,4,6,7,8]
c ={}
for key in b
p key
c[key] = a[key]
p c
end
这是输出:
2
{2=>1}
3
{2=>1, 3=>2}
4
{2=>1, 3=>2, 4=>5}
6
{6=>1, 2=>1, 3=>2, 4=>5}
7
{6=>1, 7=>10, 2=>1, 3=>2, 4=>5}
8
{6=>1, 7=>10, 2=>1, 8=>20, 3=>2, 4=>5}
我不明白的是:
我在b
中排序的密钥是我想要的。我想如果我将它添加到一个新的哈希,它将被添加到哈希的末尾,但这不是这里的情况。怎么会这样?密钥6
及其值已在前面添加,密钥7
在此之后添加,然后密钥8
及其值插入密钥2
和{之间{1}}。任何解释?
答案 0 :(得分:3)
可能你正在使用Ruby< 1.9。这就是你没有得到你想要的订单的原因。