Ruby
30
どのような問題がありますか?

この記事は最終更新日から5年以上が経過しています。

投稿日

更新日

Organization

[Ruby]Hashにmapで値を変換したHashを作成する

本記事のサマリ

単純なkey->value(数値や文字列)などを管理しているHashに対して、mapを使って値を操作した結果を、配列ではなくHashにしたい場合、Ruby2.1以降ならto_hを使うとうまく表現できますよというお話。

対象読者

Hash#mapの結果をHashにしたいRubyistの皆様

動作確認バージョン

ruby --version
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]

経緯

Hashの全要素に対して、フォーマット変換かけたようなHashを作りたくなったので。

やってみた

例えば、key1〜key3で値が数値からなるHashがあり、それを全て5桁0埋めにしたいようなケースがあったとします。
その場合は、以下のように、Hashに対して、mapをかけた時に、mapに渡したブロックの戻りを[key,new_value]のような形(ここで、new_valueは、フォーマット変換などをして得られた新たな値にします。)で返し、それをto_hでhashにすると綺麗に書けます。

↓こんな感じ

hash = { key1: 1000, key2: 300, key3: 10000}
hash.map {|key,val| [key,val.to_s.rjust(5,'0')]}.to_h

{
:key1 => "01000",
:key2 => "00300",
:key3 => "10000"
}

地味に使うケースがありそうなので、備忘録として残します。

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
yukimura1227
フルスタック目指して日々、奮闘中。あいつにマネジメントばっかりやらせるなんてもったいないと言われるように、インフラ~アプリ開発~運用ツールまで食わず嫌いせずに精進します!!
gi-no
IT/Webエンジニアに特化した転職・学習サービス "paiza (パイザ)" を開発・運営しています。【異能をのばせ】をミッションとして、IT人材のスキル/経験を可視化する成長プラットフォームを目指しています。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
React 18、あなたならどう使いこなす?
~
Azure Machine Learning を使って機械学習に関するナレッジをシェアしよう
~
30
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー