Re: [問題] 多重hash的sorting
※ 引述《david220 (累)》之銘言:
: 標題: [問題] 多重hash的sorting
: 時間: Mon Nov 5 14:53:47 2007
:
: $p{2}->{1}->{1} = 1;
: $p{2}->{2}->{2} = 4;
: $p{2}->{3}->{4} = 2;
: $p{1}->{1}->{8} = 8;
: $p{1}->{2}->{16} = 5;
: $p{1}->{3}->{24} = 7;
:
: 請問如果我要sorting以上hash
: 並輸出對應的key(key不一定是數字),該怎麼做?
:
: 希望的輸出
: 2->1->1
: 2->3->4
: 2->2->2
: 1->2->16
: 1->3->24
: 1->1->8
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.112.29.131
: 推 redmist:一定要用多重key來排序?轉成單一key會比較容易處理 11/05 16:16
: 推 david220:用多重key就已經用掉6G的ram了,單一key會炸 0rz 11/05 16:45
如果資料是以下這種
: $p{2}->{1}->{1} = 1;
: $p{2}->{2}->{2} = 4;
: $p{2}->{3}->{4} = 2;
: $p{1}->{1}->{8} = 8;
: $p{1}->{2}->{16} = 5;
: $p{1}->{3}->{24} = 7;
不管怎樣寫 要sort資料都要把資料列成一個array
如redmist版友說的方法--轉成單一key
foreach $k1(keys %p)
{
foreach $k2(keys %{$p{$k1}})
{
foreach $k3(keys %{$p{$k1}->{$k2}})
{
$hash{"$k1 $k2 $k3"}=$p{$k1}->{$k2}->{$k3};
}
}
}
最後要印出來時 再把%hash的key用split切開
如果真的要做這麼大量的計算的話,建議改用c來做這部份的工作會比較好
另外看您提供的那個範例,很難想出有什麼方法可以解決
如果能夠把實際的data貼幾份上來,這樣比較容易了解:D
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.133
推
11/06 14:13, , 1F
11/06 14:13, 1F
→
11/06 14:14, , 2F
11/06 14:14, 2F
推
11/06 15:21, , 3F
11/06 15:21, 3F
→
11/06 15:21, , 4F
11/06 15:21, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):