{"id":16,"date":"2007-05-03T01:34:00","date_gmt":"2007-05-03T01:34:00","guid":{"rendered":"\/2007\/09\/11\/converting-ruby-array-to-hash"},"modified":"2007-05-03T01:34:00","modified_gmt":"2007-05-03T01:34:00","slug":"converting-ruby-array-to-hash","status":"publish","type":"post","link":"http:\/\/pullmonkey.com\/2007\/05\/03\/converting-ruby-array-to-hash\/","title":{"rendered":"Converting ruby Array to Hash"},"content":{"rendered":"

I ran across a situation that required the know-how of converting an array into a hash.
\nConverting a hash into an array (obvious):<\/p>\n\n\n
\n
1\n<\/tt>2\n<\/tt>3\n<\/tt>4\n<\/tt><\/pre>\n<\/td>\n
\n
  >> hash = {"<\/span>a<\/span>"<\/span><\/span> => 1<\/span>, "<\/span>b<\/span>"<\/span><\/span> => 2<\/span>, "<\/span>c<\/span>"<\/span><\/span> => 3<\/span>}\n<\/tt>  => {"<\/span>a<\/span>"<\/span><\/span>=>1<\/span>, "<\/span>b<\/span>"<\/span><\/span>=>2<\/span>, "<\/span>c<\/span>"<\/span><\/span>=>3<\/span>}\n<\/tt>  >> array = hash.to_a\n<\/tt>  => [["<\/span>a<\/span>"<\/span><\/span>, 1<\/span>], ["<\/span>b<\/span>"<\/span><\/span>, 2<\/span>], ["<\/span>c<\/span>"<\/span><\/span>, 3<\/span>]]<\/pre>\n<\/td>\n<\/tr>\n<\/table>\n

Now back to hash from an array, you could try array.to_h, or array.to_hash, but apparently not.<\/p>\n\n\n
\n
1\n<\/tt>2\n<\/tt><\/pre>\n<\/td>\n
\n
  >> hash2 = Hash<\/span>[*array.flatten]\n<\/tt>  => {"<\/span>a<\/span>"<\/span><\/span>=>1<\/span>, "<\/span>b<\/span>"<\/span><\/span>=>2<\/span>, "<\/span>c<\/span>"<\/span><\/span>=>3<\/span>}<\/pre>\n<\/td>\n<\/tr>\n<\/table>\n

The *<\/tt> of *array<\/tt> converts array<\/tt> into an assignment list.
\nThe *<\/tt> opperator can also be used on the left side of the assignment:<\/p>\n\n\n
\n
1\n<\/tt>2\n<\/tt>3\n<\/tt>4\n<\/tt>5<\/strong>\n<\/tt>6\n<\/tt>7\n<\/tt>8\n<\/tt>9\n<\/tt>10<\/strong>\n<\/tt>11\n<\/tt>12\n<\/tt>13\n<\/tt>14\n<\/tt><\/pre>\n<\/td>\n
\n
  irb(main):001<\/span>:0<\/span>> a = ["<\/span>1<\/span>"<\/span><\/span>,"<\/span>2<\/span>"<\/span><\/span>,"<\/span>3<\/span>"<\/span><\/span>,"<\/span>4<\/span>"<\/span><\/span>]\n<\/tt>  => ["<\/span>1<\/span>"<\/span><\/span>, "<\/span>2<\/span>"<\/span><\/span>, "<\/span>3<\/span>"<\/span><\/span>, "<\/span>4<\/span>"<\/span><\/span>]\n<\/tt>  irb(main):002<\/span>:0<\/span>> b,c = a\n<\/tt>  => ["<\/span>1<\/span>"<\/span><\/span>, "<\/span>2<\/span>"<\/span><\/span>, "<\/span>3<\/span>"<\/span><\/span>, "<\/span>4<\/span>"<\/span><\/span>]\n<\/tt>  irb(main):003<\/span>:0<\/span>> b\n<\/tt>  => "<\/span>1<\/span>"<\/span><\/span>\n<\/tt>  irb(main):004<\/span>:0<\/span>> c\n<\/tt>  => "<\/span>2<\/span>"<\/span><\/span>\n<\/tt>  irb(main):00<\/span>8<\/span>:0<\/span>> b,*c = a\n<\/tt>  => ["<\/span>1<\/span>"<\/span><\/span>, "<\/span>2<\/span>"<\/span><\/span>, "<\/span>3<\/span>"<\/span><\/span>, "<\/span>4<\/span>"<\/span><\/span>]\n<\/tt>  irb(main):00<\/span>9<\/span>:0<\/span>> b\n<\/tt>  => "<\/span>1<\/span>"<\/span><\/span>\n<\/tt>  irb(main):010<\/span>:0<\/span>> c\n<\/tt>  => ["<\/span>2<\/span>"<\/span><\/span>, "<\/span>3<\/span>"<\/span><\/span>, "<\/span>4<\/span>"<\/span><\/span>]<\/pre>\n<\/td>\n<\/tr>\n<\/table>\n

Notice how using the *<\/tt> in front of c<\/tt> made it a list, in otherwords, c<\/tt> contains the remainder of elements in a<\/tt> after b<\/tt> got its assignment.
\nNeat, eh?<\/p>\n","protected":false},"excerpt":{"rendered":"

I ran across a situation that required the know-how of converting an array into a hash. Converting a hash into an array (obvious): 1 2 3 4 >> hash = {"a" => 1, "b" => 2, "c" => 3} => {"a"=>1, "b"=>2, "c"=>3} >> array = hash.to_a => [["a", 1], ["b", 2], ["c", 3]] Now […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,3,9],"tags":[],"_links":{"self":[{"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/posts\/16"}],"collection":[{"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":0,"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"wp:attachment":[{"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pullmonkey.com\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}