sortメソッドでは、ハッシュも直接並べ換えることができる。
ソート規準ブロックでの引数の利用のしかたを工夫するだけで良い。
forループでハッシュから要素を一個ずつ取り出すと
以下のようになる。
price  = {"りんご" => 150, "みかん" => 30,
          "いちご" => 20,  "梨"     => 120}
for item in price do
  p item
end
↓
["りんご", 150]
["いちご", 20]
["みかん", 30]
["梨", 120]
ハッシュから要素を一個ずつ取り出すと、[key, value]
と並んだ配列が出てくる。これを踏まえてprice変数に
入っている商品を、値段の大小で並べ替えよう。
price.sort {|x, y| ??? <=> ???}
      とした場合、ソート規準ブロックの仮引数 x, y には
["りんご", 150] ["いちご", 20] ["みかん", 30] ["梨", 120]
のいずれかが代入されるので、その中から値段を取り出すには配列の 第1要素(2個目)を参照すれば良い。したがって、
price.sort {|x, y| x[1] <=> y[1]}
      で値段の小さい順に並べ換えできる。
sortメソッドは並べ換えた結果を
配列として返すので以下のようになる。
price.sort{|x, y| x[1]<=>y[1]}
 =>[["いちご", 20], ["みかん", 30], ["梨", 120], ["りんご", 150]]
ここから、2つずつ値を取り出す。
price  = {
  "りんご" => 150,
  "みかん" => 30,
  "いちご" => 20,
  "梨"     => 120
}
price.sort {|x, y| x[1] <=> y[1]}.each do |f, p|
  printf("%s は %d円です。\n", f, p)
end