« ハッシュのキーでソート(並べ替え)する | メイン | ハッシュの値でソート(並べ替え)する »

カテゴリー:ハッシュ(連想配列) 

ハッシュのキーを逆順にソート(並べ替え)する

このエントリーを含むはてなブックマーク  livedoorクリップ  ハッシュのキーを逆順にソート(並べ替え)するをdel.icio.usに追加  ハッシュのキーを逆順にソート(並べ替え)するをYahoo!ブックマークに追加  ハッシュのキーを逆順にソート(並べ替え)するをニフティクリップに追加

ハッシュのキーを並べ替えた後、反転させるにはこれも文字通り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 ){



トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/602

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

VPSレンタルサーバー




クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.