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

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

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

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

Q&A

2回答

559閲覧

日付でgroupしたデータを整形したい

masa_engin

総合スコア15

Ruby

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

0グッド

0クリップ

投稿2021/12/28 07:05

編集2021/12/28 07:25

申し訳ないのですが、https://teratail.com/questions/375830でも質問しましたが、得たい結果を間違えてしまっていたので、再度質問いたします。
Rubyで日付でGroupした下記のようなデータがあります。

ruby

1{"[2021, 12, 28, 1]":2,"[2021, 12, 28, 2]":2,"[2021, 12, 28, 3]":2,"[2021, 12, 28, 4]":4,"[2021, 12, 28, 7]":2,"[2021, 12, 28, 5]":1} 2

このデータを下記のように変換したいのですがスマートに変換できる良いアルゴリズムや手法がありましたら、ご教授いただけますと幸いです。

ruby

1{["2021年12月28日", 1]=>2,["2021年12月28日", 2]=>2,["2021年12月28日", 3]=>2,["2021年12月28日", 4]=>4,["2021年12月28日", 7]=>2,["2021年12月28日", 5]=>1}

よろしくお願いいたします。

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

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

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

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

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

otn

2021/12/28 07:21

{["2021年12月28日", 1]:2,["2021年12月28日", 2]:2,["2021年12月28日", 3]:2,["2021年12月28日", 4]:4,["2021年12月28日", 7]:2,["2021年12月28日", 5]:1} は、文法的に間違っています。 ちゃんと文法的に正しいものを書きましょう。 {"A"=>1}と{"A":1}の違い理解していないのでは?
masa_engin

2021/12/28 07:30

申し訳ございませんでした。修正いたしました。
guest

回答2

0

ruby

1x = { 2 "[2021, 12, 28, 1]":2, "[2021, 12, 28, 2]":2, "[2021, 12, 28, 3]":2, 3 "[2021, 12, 28, 4]":4, "[2021, 12, 28, 7]":2, "[2021, 12, 28, 5]":1 4} 5y = x.transform_keys{|k| 6 instance_exec(k.to_s.scan(/\d+/)){ 7 |*i, n| [i.zip("年月日".chars).join, n.to_i]}} 8p y 9 10# 11{["2021年12月28日", 1]=>2, ["2021年12月28日", 2]=>2, ["2021年12月28日", 3]=>2, 12 ["2021年12月28日", 4]=>4, ["2021年12月28日", 7]=>2, ["2021年12月28日", 5]=>1}

投稿2021/12/28 09:29

編集2021/12/28 10:19
melian

総合スコア20655

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

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

0

Ruby

1require "json" 2 3foo = { 4"[2021, 12, 28, 1]":2, 5"[2021, 12, 28, 2]":2, 6"[2021, 12, 28, 3]":2, 7"[2021, 12, 28, 4]":4, 8"[2021, 12, 28, 7]":2, 9"[2021, 12, 28, 5]":1 10} 11 12bar = foo.map do |k,v| 13 y,m,d,n = JSON.parse(k.to_s) 14 [["#{y}#{m}#{d}日",n],v] 15end.to_h 16 17p bar

投稿2021/12/28 07:30

otn

総合スコア85901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問