我必须在Ruby中操作深度嵌套的哈希(5或6级)。例如,我需要像这样交换第3和第4级:
a[b][c][d][e] = []
为:
a[b][d][c][e]= []
有人能指出我会帮助我的算法吗?我不是懒惰,只是在时间限制下。
答案 0 :(得分:1)
除非我非常疲惫,否则你会得到类似的东西:
result = Hash.new
a.each do |b, ab|
result[b] ||= Hash.new
ab.each do |c, abc|
abc.each do |d, abcd|
(result[b][d] ||= Hash.new)[c] = abcd
end
end
end
a = result
现在,我并不是说这是最有效的解决方法。
答案 1 :(得分:0)
由于您发现正在解析XML,我强烈建议您不要使用自己的解决方案。 REXML是在Ruby中解析XML的一种选择。