array x array matrix in ruby

来源:互联网 发布:威少刷数据gif 编辑:程序博客网 时间:2024/06/02 16:10

I'd like to convert from

{'key1' => (1..10) , 'key2' => (11..20) , 'key3' => (21..30)}

to

[{'key1' => 1, 'key2' => 11, 'key3' => 21},{'key1' => 1, 'key2' => 11, 'key3' => 22},... . .{'key1' => 10, 'key2' => 20, 'key3' => 30}]

How to solve it?

hsh = {'key1' => (1..10) ,'key2' => (11..20) , 'key3' => (21..30)}keys = hsh.keyshsh['key1'].to_a.product(hsh['key2'].to_a,hsh['key3'].to_a).map{|a|Hash[keys.zip(a)]}

h = {  'key1' => (1..10),  'key2' => (11..20),  'key3' => (21..30)}h.map { |k,v| [k].product(v.to_a) }.transpose.map { |e| Hash[e] }#=> [{"key1"=>1, "key2"=>11, "key3"=>21},#    {"key1"=>2, "key2"=>12, "key3"=>22},#    {"key1"=>3, "key2"=>13, "key3"=>23},#    {"key1"=>4, "key2"=>14, "key3"=>24},#    {"key1"=>5, "key2"=>15, "key3"=>25},#    {"key1"=>6, "key2"=>16, "key3"=>26},#    {"key1"=>7, "key2"=>17, "key3"=>27},#    {"key1"=>8, "key2"=>18, "key3"=>28},#    {"key1"=>9, "key2"=>19, "key3"=>29},#    {"key1"=>10, "key2"=>20, "key3"=>30}]

0 0