Ruby/Rails: 将数组的数组转换为数组的哈希表

3
我希望您能告诉我一种查询数据库并按列分组显示所有值的惯用方法。
例如,以下指令:
@players = Player.pluck(:white, :black, :red, :blue, :yellow)

返回一个像这样的多维数组:
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

但我需要像这样的数组哈希:
{
  white:  [1, 6, 11],
  black:  [2, 7, 12], 
  red:    [3, 8, 13],
  blue:   [4, 9, 14],
  yellow: [5, 10, 15]
}

所有数组的第一个元素存储在“white”键下,所有数组的第二个元素存储在“black”键下,以此类推。

1个回答

8
a = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
[:white, :black, :red, :blue, :yellow].zip(a.transpose)
# => [[:white, [1, 6, 11]], [:black, [2, 7, 12]], [:red, [3, 8, 13]], [:blue, [4, 9, 14]], [:yellow, [5, 10, 15]]]
Hash[[:white, :black, :red, :blue, :yellow].zip(a.transpose)]
# => {:white=>[1, 6, 11], :black=>[2, 7, 12], :red=>[3, 8, 13], :blue=>[4, 9, 14], :yellow=>[5, 10, 15]}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接