10727

[code]

    [
      ["てつお", "名前"],
      ["男", "性別"],
      ["23歳", "年齢"],
    ]
    
    ↓
    
    {
      "名前" => "てつお"
      "性別" => "男"
      "年齢" => "23歳"
    }
    
[/code]

phpしか使ったことしかなく、mapやeachなどを使って上記の処理をする方法がわかりません。

[code]

    data.map{|d|
      {
        d[1] => d[0]
      }
    }
    
[/code]

こうすると  
配列の中にハッシュが格納される形になってしまいうまく行きませんでした。

## 追記

[code]

    data.map{|d|
      [d[1], d[0]]
    }.to_h
    
[/code]

とすることで出来ました。  
このコードは普段からrubyを扱っている方でもわかりやすいコードとなっていますでしょうか。  
もう少し一般的な書き方があればおしえてください。  
よろしくお願いします。


CC BY-SA 3.0
2015-05-28T11:48:47.983
10726
2015-05-28T12:08:50.093
2015-05-28T11:56:50.620
9149
9149
question
ruby
この処理をrubyらしく処理する方法を教えて下さい


`map` を次のように書き換えるとシンプルになります。(これは、`map { |x| x.reverse }` と等価です)

[code]

    data.map(&:reverse).to_h
    
[/code]

`Hash#invert`
を利用する方法もありますが、パフォーマンスが落ちるかもしれません。(極端に大きなデータだったり、繰り返し利用されない限り無視できる程度だと思いますが。)

[code]

    data.to_h.invert
    
[/code]


CC BY-SA 3.0
2015-05-28T12:08:50.093
10727
2015-05-28T12:08:50.093
76
10726
answer