とあるエンジニアの闇歴史帳

コピペで使える便利Wiki ※現在構築中です。

ユーザ用ツール


perl:hash_sortvalue

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

perl:hash_sortvalue [2017/12/14 20:18]
perl:hash_sortvalue [2020/06/23 14:10] (現在)
行 1: 行 1:
 +====== ハッシュの値でソートする - Perl ======
 +~~socialite~~
 +<note important>この記事は2007年03月06日に書かれた物です</note>
 +
 +ハッシュのキーでソートするのはさほど難しくないが、値で並べ替えるにはどうすればよいだろう?同様にsort関数を用いれば良い。
 +
 +===== サンプル =====
 +<code perl>
 +;#
 +;#ハッシュを値でソートして表示
 +;#
 +
 +#------------------------------#
 +#初期化する
 +#------------------------------#
 +%hash = (
 +      'A' => '1_オレンジ'
 +    , 'B' => '4_りんご'
 +    , 'C' => '2_マスカット'
 +    , 'D' => '3_バナナ'
 +
 +);
 +
 +#------------------------------#
 +#値で並べ替えて表示
 +#------------------------------#
 +foreach my $name (sort { $hash{$a} <=> $hash{$b} } keys %hash){
 + print "$name,$hash{$name}\n";
 +}
 +</code>
 +
 +===== 実行結果 =====
 +<code>
 +A,1_オレンジ
 +C,2_マスカット
 +D,3_バナナ
 +B,4_りんご
 +</code>
 +
 +逆順に(反転して)表示したければ、「sort { $hash{$b} <=> $hash{$a} }」とすればよい。数値として比較を行いたいのなら「<=>」の部分を「cmp」にする。
 +
 +===== 関連書籍 =====
 +{{amazon>jp:4873113008}}
 +<html><p style="clear:both"></p></html>
 +
 +{{amazon>jp:4798139815}}
 +<html><p style="clear:both"></p></html>
 +
 +
 +{{tag>CGI・Perl例文集 Perl 連想配列 ハッシュ sort ソート}}
 +~~socialite~~
  

関連ページ