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

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

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

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

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1178閲覧

ハッシュの値がハッシュになっている多次元配列のキーを削除する方法

widget11

総合スコア221

Ruby

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

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2018/08/19 16:44

hash_arr= {{"65"=>{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, "66"=>{"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, . . . "100"=>{"fixture_id"=>"100", "event_timestamp"=>"1533987000"} }

以上の様なハッシュの値がハッシュになっている多次元配列がある場合、

{{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, {"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, . . . {"fixture_id"=>"100", "event_timestamp"=>"1533987000"} }

この様にキーの先頭要素のみを削除するにはどの様にすれば良いでしょうか?
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ruby

1{ 2"65"=>{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, 3"66"=>{"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, 4. 5. 6. 7"100"=>{"fixture_id"=>"100", "event_timestamp"=>"1533987000"} 8}

ruby

1[{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, 2{"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, 3. 4. 5. 6{"fixture_id"=>"100", "event_timestamp"=>"1533987000"} 7]

で、よろしいでしょうか?
(データ提示される時はRubyで読み込めるデータでないと解釈あっているのか不安になります。
前者は{が多くて構文エラー、後者は配列の表記は{}ではなく[]なのでエラーです)

キーに意味がなく並び順が不定(実際のところは、Ruby1.9以降は挿入された順)でいいのならば

ruby

1hash_arr = { 2"65"=>{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, 3"66"=>{"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, 4"100"=>{"fixture_id"=>"100", "event_timestamp"=>"1533987000"} 5} 6arr = hash_arr.values 7pp arr 8# => [{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, 9# {"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, 10# {"fixture_id"=>"100", "event_timestamp"=>"1533987000"}]

キーによって並び替える必要がある場合は

ruby

1arr = hash_arr.sort_by{|key,val| key.to_i}.map(&:last) 2pp arr 3# => [{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, 4# {"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, 5# {"fixture_id"=>"100", "event_timestamp"=>"1533987000"}]

投稿2018/08/19 18:18

asm

総合スコア15147

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

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

0

ベストアンサー

こんにちは。

以下のように、Hash#values メソッドを使えば、ハッシュの値が配列となって得られます

ruby

1data_hash = { 2 "65"=>{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, 3 "66"=>{"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, 4 "67"=>{"fixture_id"=>"67", "event_timestamp"=>"1534002000"}, 5 "68"=>{"fixture_id"=>"68", "event_timestamp"=>"1534014400"}, 6 "69"=>{"fixture_id"=>"69", "event_timestamp"=>"1534027500"}, 7} 8 9data_array = data_hash.values # => [{"fixture_id"=>"65", "event_timestamp"=>"1533927600"}, {"fixture_id"=>"66", "event_timestamp"=>"1533987000"}, {"fixture_id"=>"67", "event_timestamp"=>"1534002000"}, {"fixture_id"=>"68", "event_timestamp"=>"1534014400"}, {"fixture_id"=>"69", "event_timestamp"=>"1534027500"}] 10

※上記と同じコードを https://repl.it/@jun68ykt/Q142017 にも上げておきました。[run]をクリックすると実行されます。

なお、上記のコードで

  • data_hash は多次元配列ではなく(キーが文字列で、値がハッシュであるような)ハッシュ
  • data_hash.valuesにより得られる data_array は配列

です。

以上、参考になれば幸いです。

投稿2018/08/19 18:07

編集2018/08/19 18:15
jun68ykt

総合スコア9058

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問