Ruby 資料一覧
ハッシュ
2007/8/1更新
対応バージョン: 1.8
ハッシュをソートする
ハッシュのキー、値それぞれでソート可能である。
例)
data = {} data[1] = 1 data[0] = 5 data[2] = 4 data[4] = 3 data[3] = 2 p data.sort {|x, y| x[0] <=> y[0]} # キーでソート => [[0, 5], [1, 1], [2, 4], [3, 2], [4, 3]] p data.sort {|x, y| x[1] <=> y[1]} # 値でソート => [[1, 1], [3, 2], [4, 3], [2, 4], [0, 5]]
(*) xとyの[0]、[1]にはそれぞれ「キー」、「値」が入る。
逆順にソートしたい場合は以下のようにいったんソートしたものを逆順に並び替えることで実現可能である(reverseは逆順ソートではなく、単に逆に並べ替えるだけである)。
p data.sort.reverse {|x, y| x[0] <=> y[0]} => [[4, 3], [3, 2], [2, 4], [1, 1], [0, 5]]
参考までに、逆順ソートした値を使用する場合は以下のようにする(暗黙的にキー順にソートされる)。
data.sort.reverse_each {|key, item| puts "#{key} #{item}" } => 4 3 => 3 2 => 2 4 => 1 1 => 0 5
ハッシュの添字に変数を使用する
最初に{}でハッシュを初期化し、ハッシュのキー部に変数名を「"」でくくって指定する。
例)
data = {} # ハッシュ初期化 key = "key_a" # キー設定 data["#{key}"] = "abc" # ハッシュ設定 p data["#{key}"] => "abc"