ハッシュのキーを逆順にソートする - Perl

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

ハッシュのキーを並べ替えた後、反転させるにはこれも文字通りreverse関数を使用すればよい。 以下はハッシュのキーを文字列としてソートし、それを逆順に並べ替えている。

サンプル(文字)

;#
;#ハッシュをソートして表示(文字としてソート)
;#
 
#------------------------------#
#初期化する
#------------------------------#
%hash = (
      'orange' => 'オレンジ'
    , 'apple'  => 'りんご'
    , 'muscat' => 'マスカット'
    , 'banana' => 'バナナ'
);
 
#------------------------------#
#並べ替えて表示
#------------------------------#
foreach my $name ( reverse sort keys %hash ){
	print "$name,$hash{$name}\n";
}

実行結果

orange,オレンジ
muscat,マスカット
banana,バナナ
apple,りんご

数字としてハッシュのキーをソートし、反転させたいなら次のように書く。

サンプル(数値)

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

実行結果

4,りんご
3,オレンジ
2,バナナ
1,マスカット

もしくはforeachの部分を次のようにする。$aと$bを逆にしただけ。

foreach my $name (sort { $b <=> $a } keys %hash ){

関連書籍

Damian Conway
ISBN 4873113008
¥ 4,644

failed to fetch data: unkown error

コメント

コメントを入力. Wiki文法が有効です:
Q E H B O