Ruby将数组映射到哈希

som*_*ser 4 ruby arrays hash

我有一个2D数组,每行如下:

['John', 'M', '34']

我想映射到一个哈希数组,每个哈希像:

{:Name=>"John", :Gender=>"M", :Age=>"34"}

这样做有一种优雅的方式吗?

Mar*_*eed 6

array_of_rows.map { |n,g,a| { Name: n, Gender: g, Age: a } }
Run Code Online (Sandbox Code Playgroud)

要么

array_of_rows.map { |row| %i{Name Gender Age}.zip(row).to_h }
Run Code Online (Sandbox Code Playgroud)

它们会产生相同的结果,所以选择一个你觉得更清楚的结果.例如,给定此输入:

array_of_rows = [
  ['John', 'M', '34'],
  ['Mark', 'M', '49']
]
Run Code Online (Sandbox Code Playgroud)

表达式将产生此输出:

[{:Name=>"John", :Gender=>"M", :Age=>"34"}, 
 {:Name=>"Mark", :Gender=>"M", :Age=>"49"}]
Run Code Online (Sandbox Code Playgroud)