アプリ版:「スタンプのみでお礼する」機能のリリースについて

ハッシュ変数の並べ替えをやりたいです。ただ、値の長さでソートをしたいのです。

my %tan_syouhin = (

'佐賀' => 'あいうえお',
'滋賀' => 'かき',
'無我' => 'さしすせそそそ',
'千賀' => 'うりるら',
'日我' => 'ぜるだんぽ'

);

というハッシュ変数があって「値の長さ」でソートするにはどうしたら良いでしょうか?

A 回答 (3件)

こうですかね。

勘違いしていたらすみません

ハッシュの値でソートしたキー配列
my %s = ( ... );
my @v = sort { length $s{$b} <=> length $s{$a} } keys %s;

キー配列からハッシュを参照
foreach (@v) {
printf "%s => %s\n", $_, $s{$_};
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/29 18:52

「データの順序」というものはハッシュでは意味を持たないので, 何をどう並べ替えようとハッシュに入れたらその順序がどうなるかはわかりません.



で, やっぱり「何をソートしたいのか」がわからん. 「どういう結果を期待しているのか」も書いてくれないし....

この回答への補足

説明が下手ですいません。

foreach で処理を回したい時、

'無我' => 'さしすせそそそ',
'日我' => 'ぜるだんぽ',
'佐賀' => 'あいうえお',
'千賀' => 'うりるら',
'滋賀' => 'かき',

という順番で処理がしたいのです。

補足日時:2013/05/29 18:07
    • good
    • 0

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

この回答への補足

ハッシュに入っている値の文字列の長さでソートをしたいのです、説明不足ですいません。

その結果をまたハッシュに入れ直したいのですが、その場合は順番はバラバラになるのでしょうか?

補足日時:2013/05/29 16:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!