• ベストアンサー

Perlのハッシュ変数のソートについて

ハッシュ変数の並べ替えをやりたいです。ただ、値の長さでソートをしたいのです。 my %tan_syouhin = ( '佐賀' => 'あいうえお', '滋賀' => 'かき', '無我' => 'さしすせそそそ', '千賀' => 'うりるら', '日我' => 'ぜるだんぽ' ); というハッシュ変数があって「値の長さ」でソートするにはどうしたら良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.3

こうですかね。勘違いしていたらすみません ハッシュの値でソートしたキー配列 my %s = ( ... ); my @v = sort { length $s{$b} <=> length $s{$a} } keys %s; キー配列からハッシュを参照 foreach (@v) { printf "%s => %s\n", $_, $s{$_}; }

nakisan2011_12
質問者

お礼

ありがとうございました! さっそく組み込んでみます!!

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「データの順序」というものはハッシュでは意味を持たないので, 何をどう並べ替えようとハッシュに入れたらその順序がどうなるかはわかりません. で, やっぱり「何をソートしたいのか」がわからん. 「どういう結果を期待しているのか」も書いてくれないし....

nakisan2011_12
質問者

補足

説明が下手ですいません。 foreach で処理を回したい時、 '無我' => 'さしすせそそそ', '日我' => 'ぜるだんぽ', '佐賀' => 'あいうえお', '千賀' => 'うりるら', '滋賀' => 'かき', という順番で処理がしたいのです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

何をソートしたいのでしょうか? つまり, どのような結果を期待しているのでしょうか?

nakisan2011_12
質問者

補足

ハッシュに入っている値の文字列の長さでソートをしたいのです、説明不足ですいません。 その結果をまたハッシュに入れ直したいのですが、その場合は順番はバラバラになるのでしょうか?

関連するQ&A