ハッシュの値でソートする - Perl

この記事は2007年03月06日に書かれた物です

ハッシュのキーでソートするのはさほど難しくないが、値で並べ替えるにはどうすればよいだろう?同様にsort関数を用いれば良い。

サンプル

;#
;#ハッシュを値でソートして表示
;#
 
#------------------------------#
#初期化する
#------------------------------#
%hash = (
      'A' => '1_オレンジ'
    , 'B' => '4_りんご'
    , 'C' => '2_マスカット'
    , 'D' => '3_バナナ'
 
);
 
#------------------------------#
#値で並べ替えて表示
#------------------------------#
foreach my $name (sort { $hash{$a} <=> $hash{$b} } keys %hash){
	print "$name,$hash{$name}\n";
}

実行結果

A,1_オレンジ
C,2_マスカット
D,3_バナナ
B,4_りんご

逆順に(反転して)表示したければ、「sort { $hash{$b} ⇔ $hash{$a} }」とすればよい。数値として比較を行いたいのなら「⇔」の部分を「cmp」にする。

関連書籍

failed to fetch data: unkown error

Joseph N. Hall, Joshua…
ISBN 4798139815
¥ 4,104

コメント

コメントを入力. Wiki文法が有効です:
R U​ L B᠎ B