2013年2月19日火曜日

ハッシュ(辞書)を値の順にソートする

ハッシュ(辞書)を値の昇順にソート


%hash = ();
$hash{'a'} = 1;
$hash{'b'} = 3;
$hash{'c'} = 5;
$hash{'d'} = 2;
$hash{'e'} = 4;

# ハッシュを値の昇順にソート
@sorted_key = sort {$hash{$a} <=> $hash{$b}} keys %hash;

foreach $key(@sorted_key) {
    print "$key:$hash{$key}\n";
}


実行結果は以下の様になります。


a:1
d:2
b:3
e:4
c:5



注意が必要なのは、ハッシュは配列のように数値のインデックスがあるわけではないのでsort関数で帰ってくるのはキーの配列だということです。

上記の$aと$bを入れ替えれば降順に出力されるようになります。


%hash = ();
$hash{'a'} = 1;
$hash{'b'} = 3;
$hash{'c'} = 5;
$hash{'d'} = 2;
$hash{'e'} = 4;

# ハッシュを値の降順にソート
@sorted_key = sort {$hash{$b} <=> $hash{$a}} keys %hash;

foreach $key(@sorted_key) {
    print "$key:$hash{$key}\n";
}



実行結果


c:5
e:4
b:3
d:2
a:1



0 件のコメント:

コメントを投稿