基礎プログラミング II 第 2 回 (なになにといえばこれこれ) 「要素の一部分を使って入れ替えをするには」 講義ノート目次

次に、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 変数][要素番号]
}