前提条件
データが以下のように存在しています。
ruby
1data = {:chocolate=>95, :ice=>90, :candy=>90}
行いたいこと
最初に数値が大きいものを並び替え同じ数値だったら
candy,ice,chocolateの順番に並び替える処理をしたいです。
試したこと
ruby
1ref = {:candy=>0, :ice=>1, :chocolate=>2}
変換表を作成し、sortをかけました
ruby
1data.sort{|a,b| [-a[1], ref[a]] <=> b[1],ref[b]]}
結果
第2ソートが効いておらず変換表通りにソートされていません。
[[:chocolate,95],[:ice,90],[:candy,90]]
実現したいデータ構造
[[:chocolate,95],[:candy,90],[:ice,90]]
参考にした記事
https://masutaka.net/chalow/2009-02-03-1.html
https://blog.toshimaru.net/ruby-hash-sort/

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/03/04 10:54