質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

3033閲覧

Ruby Hashの先頭n個を別のHashとして抽出する

shinichi0326

総合スコア47

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/12/21 09:58

今、{4=>4, 2=>5, 5=>6}というHashがあります。
これを先頭から2件{4=>4, 2=>5}という別のHashとして抽出したいのですが、ネットを調べてみてもよく解りません。
どなたかご教示下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

プログラム
hash = {4=>4, 2=>5, 5=>6}
p Hash[*hash.to_a.shift(2).flatten!]
結果
{4=>4, 2=>5}
参考
配列からハッシュを作成する
こんな感じのプログラムを考えてみました。
配列にして前から2つをとって、配列からHashを作ってみました。

投稿2016/12/21 10:22

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinichi0326

2016/12/21 10:53

ご教示ありがとうございます。 RubyLifeは割とチェックしていたのですが、気付かなかったです。 Rubyはワンライナーで書けるみたいですが、慣れるまではよくわからないです。 頑張ってワンライナーで書けるようになりたいです。
guest

0

ruby(1.9以降) の Hash は ordered map なので keys.take(2) で良いかと思います。

ruby

1a = {4=>4, 2=>5, 5=>6} 2p Hash[a.keys.take(2).map{|k| [k, a[k]] }.flatten(0)]

お試し

これで出来るかと思います。

投稿2016/12/21 10:24

mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mattn

2016/12/21 10:25

h_a さんのが良いですね
shinichi0326

2016/12/21 10:55

ご教示ありがとうございます。 今回はh_aさんをベストアンサーにさせて頂きましたが、プログラムは色々な書き方があって然るべきと考えていますので、大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問