我如何反转哈希中的元素,保持相同的值和键,但在哈希中反转它们的顺序.
像这样:
{ "4" => "happiness", "10" => "cool", "lala" => "54", "1" => "spider" }
Run Code Online (Sandbox Code Playgroud)
并将其转换为:
{ "1" => "spider", "lala" => "54", "10" => "cool", "4" => "happiness" }
Run Code Online (Sandbox Code Playgroud)
或者,也许我可以each向后运行一个循环,从哈希中的最后一个元素开始,而不是第一个?
mu *_*ort 63
您可以将哈希转换为数组,反过来,然后将其转换回哈希:
reversed_h = Hash[h.to_a.reverse]
Run Code Online (Sandbox Code Playgroud)
Hash#to_a给你一个数组数组,内部数组是简单的[key,value]对,然后你使用反转该数组Array#reverse,Hash[]并将[key,value]对转换回哈希.
Ruby 2.1添加了一个Array#to_h方法,现在你可以说:
reversed_h = h.to_a.reverse.to_h
Run Code Online (Sandbox Code Playgroud)
在Ruby 2.1+你可以结合reverse_each和to_h:
{foo: 1, bar: 2}.reverse_each.to_h
#=> {:bar=>2, :foo=>1}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28509 次 |
| 最近记录: |