トリックの数はここに助けることができるEnumerableライブラリにあります:
require 'json'
data = JSON.load <<END
{
"ABCD": [ ["x", "x", "x", "x"], ["x", "x", "x", "x"] ],
"EFGH": [ ["x", "x", "x", "x"], ["x", "x", "x", "x"] ],
"IJKL": [ ["x", "x", "x", "x"], ["x", "x", "x", "x"] ]
}
END
reworked = Hash[
data.map do |key, values|
letters = key.chars
[ key, values.map { |a| letters.zip(a).map(&:join) }]
end
]
# => {"ABCD"=>[["Ax", "Bx", "Cx", "Dx"], ["Ax", "Bx", "Cx", "Dx"]], "EFGH"=>[["Ex", "Fx", "Gx", "Hx"], ["Ex", "Fx", "Gx", "Hx"]], "IJKL"=>[["Ix", "Jx", "Kx", "Lx"], ["Ix", "Jx", "Kx", "Lx"]]}
ここHash[]
は別のものに1つのハッシュを変換するのに有用である、とmap
は、リスト内の再書き込みの各要素に使用されています。 zip
はジッパーのように2つのアレイを組み合わせています。 chars
は、文字列から個々の文字を簡単に取り出す方法です。
ファイルにこのバックを書きたい場合:
File.open('output.json', 'w') do |f|
f.write(JSON.dump(reworked))
end
私は 'A1'などという名前のキーを見ません。それらはどこですか? – tadman