你的语法是有点过了......你需要打开一个紧密哈希有花括号:
{"1990" => '10', "1995" => '20', "2010" => '2', "1985" => '50'}
基本上,你键控年与当年相关的天数。要使用密钥,您需要使用散列火箭(=>
)来表示密钥和值。
然后,以降序的键的顺序(在你的情况下,一年)进行排序,你会以这种方式排序逆转:
hash = {"1990" => '10', "1995" => '20', "2010" => '2', "1985" => '50'}
sorted = Hash[hash.sort.reverse]
#=> {"2010"=>"2", "1995"=>"20", "1990"=>"10", "1985"=>"50"}
最后,您可以通过访问天数同期:
sorted["1995"] #=> "20"
sorted["1985"] #=> "50"
或访问每一对顺序:
sorted.each do |k, v|
puts "Year: ".k." has ".v"\n"
puts "Now let's look at the previous year."
end
编辑:
如果你想两个数组一起合并成连续的键值对的哈希值,你可以做到以下几点:
years = ["1990", "1995", "2010", "1985"]
days = ['10', '20', '2', '50']
Hash[*years.zip(days).flatten]
#=> {"1990"=>"10", "1995"=>"20", "2010"=>"2", "1985"=>"50"}
我很努力将两个数组合并成哈希。我知道这种排序方法。 – Rubyist
希望你在你的问题中提到过。我已经更新了我的答案,以演示如何将两个数组合并成一个哈希。 – zeantsoi
谢谢我刚刚完成。 :) – Rubyist