Eu tenho uma matriz multidimensional onde a primeira linha contém os rótulos de valor:
[
["a","b","c"],
[1,2,3],
[4,5,6]
]
Gostaria de converter essa matriz em uma matriz de hashes em que os rótulos são os índices em cada elemento:
[
{"a" => 1, "b" => 2, "c" => 3},
{"a" => 4, "b" => 5, "c" => 6}
]
Qual é a maneira mais rápida de fazer isso no Ruby / Rails?
Respostas:
3 para resposta № 1Aqui está uma maneira de converter sua matriz multidimensional em uma matriz de hashes, onde o primeiro elemento na matriz fornecida atua como o conjunto de chaves usadas nos hashes retornados:
arr = [
["a", "b", "c"],
[1, 2, 3],
[4, 5, 6]
]
labels = arr.shift
arr.map { |sub_arr| Hash[labels.zip(sub_arr)] }
# => [{"a" => 1, "b" => 2, "c" => 3}, {"a" => 4, "b" => 5, "c" => 6}]
Espero que ajude!