Rubyレシピブック その②(ハッシュ)
読書メモです。
1つのキーに複数の値が対応するハッシュを作る
複数の値は配列で保存されます。
h = Hash.new{ | h, key | h[key] = [] } h["a"] << 1 h["b"] << 2 h["a"] << 2 irb(main):297:0> hash => {"a"=>[1, 2], "b"=>[2]}
この方法を用いる場合、ハッシュに新しいキーを追加するときに配列でないものを値にしてしまうと意味がなくなってしまいます。
ハッシュにおけるソート
sort_byメソッドです。
h = {"a" => "Ruby","b"=>"Perl","c"=>"Python"} # キーでソート irb(main):319:0> h.sort_by{|k, v| k } => [["a", "Ruby"], ["b", "Perl"], ["c", "Python"]] # 値でソート irb(main):320:0> h.sort_by{|k, v| v } => [["b", "Perl"], ["c", "Python"], ["a", "Ruby"]] # キー、値の順でソート irb(main):321:0> h.sort_by{|k, v| [k,v] } => [["a", "Ruby"], ["b", "Perl"], ["c", "Python"]]