我正在从YAML文件加载配置。
我有一个如下所示的哈希:{:first=>{:abc=>[["one", "two", "three"]], :def => [["one", "two", "three"]]}, :second=>{:abc=>[["one", "two", "three"]]}}
但我想得到:
{:first=>{:abc=>["one", "two", "three"], :def => ["one", "two", "three"]}, :second=>{:abc=>["one", "two", "three"]}}
即使端部阵列变平。 结构不会比这里显示的任何“更深”。
首选单行代码。
答案 0 :(得分:7)
这应该有效:
hash.each_value do |nested_hash|
nested_hash.each_value do |array|
array.flatten!
end
end
或者,在单行版本中:
hash.each_value { |nested_hash| nested_hash.each_value(&:flatten!) }