2014-07-07 41 views
1

在Ruby中,将二维数组值转换为散列数组的最有效方法是什么?红宝石二维数组与哈希阵列与不同阵列的键哈希

例如,来自:

keys = ['First name', 'Last name', 'Phone number'] 
values = [['John', 'Smith', '555-1234'], ['Peter', 'Jones', '555-5678']] 

要:

[ 
    {'First name' => 'John', 
    'Last name' => 'Smith', 
    'Phone number' => '555-1234'}, 
    {'First name' => 'Peter', 
    'Last name' => 'Jones', 
    'Phone number' => '555-5678'} 
] 

回答

3

你可以做

array_of_hashs = values.map do |ary| 
    keys.zip(ary).to_h 
end 

array_of_hashs 
# => [{"First name"=>"John", "Last name"=>"Smith", "Phone number"=>"555-1234"}, 
# {"First name"=>"Peter", "Last name"=>"Jones", "Phone number"=>"555-5678"}] 
+1

谢谢!在Ruby 2.0中,我不得不将'keys.zip(ary).to_h'更改为'Hash [keys.zip(ary)]'。 – Alex

+0

@AlexNorton Hum。你是对的。 –