次に、sesame.keys 配列に sort をかけたい。 単なる sort method だけでは、key 部分での sort を行ってしまう。 よって、sort を value 配列の一部で行うように、指定する必要がある。
第 2 期の売上げについて "まづやま酒店" 1 "さけでん商店" 2 "づるおが米商店" 3 "みがざスーパー" 4
と並べられたら、p 文を printf 文に変更する。 printf 文でより分りやすく表示させよう。(解答例)
print("第 2 期の売上げについて\n")
sesame.keys.sort{
|second,lowest|
sesame[second][1] <=>sesame[lowest][1]
}.each{
|retail|
printf("%s\t%d\n", retail, sesame[retail][1])
}
構造は value 変数の並べ替えのときと同じであるが、 配列の一部分での入れ替えであるため、成分を指定している。
Hash.keys.sort{
|並び替え前の key 変数, 並び替え後の key 変数|
Hash[並び替え前の key 変数][要素番号] <=> hash 配列[並び替え後の key 変数][要素番号]
}