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"