在Ruby中操作哈希

时间:2011-03-21 14:49:18

标签: ruby algorithm hash

我必须在Ruby中操作深度嵌套的哈希(5或6级)。例如,我需要像这样交换第3和第4级:

a[b][c][d][e] = []

为:

a[b][d][c][e]=  []

有人能指出我会帮助我的算法吗?我不是懒惰,只是在时间限制下。

2 个答案:

答案 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的一种选择。