我必须在Ruby中操纵深度嵌套哈希(5或6级)。例如,我需要交换像这样的第三和第四个层次,从:在Ruby中操作哈希
a[b][c][d][e] = []
到:
a[b][d][c][e]= []
任何人都可以点我的算法,这将帮助我吗?我不是懒惰的,只是在时间限制下。
我必须在Ruby中操纵深度嵌套哈希(5或6级)。例如,我需要交换像这样的第三和第四个层次,从:在Ruby中操作哈希
a[b][c][d][e] = []
到:
a[b][d][c][e]= []
任何人都可以点我的算法,这将帮助我吗?我不是懒惰的,只是在时间限制下。
除非我疲惫不堪,你跑不掉的东西,像这样:
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
现在,我并不是说这是工作出来的最有效的方式。
我不明白。难道你不知道哪两个元素需要交换?此外,散列确实需要如此复杂吗? – 2011-03-21 14:54:04
我知道我想交换哪些元素。我正在使用这个来构建一个与源散列不同的嵌套的XML文件结构。 – AKWF 2011-03-21 14:57:34
@yock:深嵌套哈希是比我们想要的更常见的东西...通常是一个糟糕的设计的症状,确实:) – Romain 2011-03-21 14:58:42