次に、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 変数][要素番号] # }
本日の講義 / 基礎プログラミング II / 2007 年度