假设我们有
b = {"b"=>"c"}
Run Code Online (Sandbox Code Playgroud)
通过这样做b.invert我们可以很容易地获得结果
{"c"=>"b"}
Run Code Online (Sandbox Code Playgroud)
那是我想要尝试一些非常酷的东西的时候.假设我们有
a = {"a"=>{"b"=>"c"}}
Run Code Online (Sandbox Code Playgroud)
什么是一种相当有效的方法来实现这一目标{{"c"=>"b"}=>"a"}(在这里,我们扭转最内在hash并努力实现这一目标)
当然,最好将其扩展到n彼此之间的哈希量.我一直在寻找其他类似的问题,但没有找到任何问题.
谢谢.
小智 5
这可以通过用于反转散列的键的递归方法(以及值,如果需要)来实现.例如:
hsh = {{"c"=>"b"}=>"a"}
def recursive_invert(hsh)
hsh.each_with_object({}) do |(k, v), inverted_hsh|
if k.is_a? Hash
k = recursive_invert(k)
end
inverted_hsh[v] = k
end
end
recursive_invert(hsh) # {"a"=>{"b"=>"c"}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |