0
在此先感謝您的幫助。按特定鍵值對perl中的多維哈希值進行排序
我有一個名爲%pepHash
的陣列,每個$count
有174個「計數」和多個「肽」。 這裏的哈希的一個片段:
Count: 39 Peptide: 0 Score: 55.03 MR: 1792.3206
Count: 39 Peptide: 1 Score: 75.22 MR: 1792.6158
Count: 39 Peptide: 2 Score: 62.63 MR: 1972.7156
Count: 39 Peptide: 3 Score: 49.95 MR: 2365.2174
Count: 40 Peptide: 0 Score: 46.38 MR: 1256.4437
Count: 40 Peptide: 1 Score: 71.07 MR: 1950.1644
Count: 40 Peptide: 2 Score: 71.77 MR: 2492.9394
Count: 40 Peptide: 3 Score: 67.28 MR: 2493.0154
首先,我不是很好的數據結構,所以就多d哈希任何更好的建議將是很好。
Count: 40 Peptide: 1 Score: 71.07 MR: 1950.1644
由$pepHash[$count][$pepCount]{$PEP_SCORE}
或{$PEP_MR}
訪問,在這種情況下,這顯然$pepHash[40][1]{$PEP_SCORE}
。 我要排序的所有%pepHash
其得分降序排列,或創建一個新的排序的散列所以列表變成:
Count: 39 Peptide: 0 Score: 75.22 MR: 1792.6158
Count: 39 Peptide: 1 Score: 62.63 MR: 1972.7156
Count: 39 Peptide: 2 Score: 55.03 MR: 1792.3206
Count: 39 Peptide: 3 Score: 49.95 MR: 2365.2174
Count: 40 Peptide: 0 Score: 71.77 MR: 2492.9394
Count: 40 Peptide: 1 Score: 71.07 MR: 1950.1644
Count: 40 Peptide: 2 Score: 67.28 MR: 2493.0154
Count: 40 Peptide: 3 Score: 46.38 MR: 1256.4437
公告更新$pepCount
值。我有這樣的循環可能是有用的:
for ($count = 0; $count < $total; $count++) {
for ($pepCount = 0; $pepCount < $pepTotal[$count]; $pepCount++) {
}
}
我也與此搞亂無濟於事因爲我是一個小白:
foreach $key (sort {$pepHash{$b} <=> $pepHash{$a}} keys(%pepHash)) {
#CONFUSED
}
編輯:這對我幫助很大:http://www.stathis.co.uk/computers/perl-sort-tutorial
感謝您的意見。但我仍然在解決這個問題。這似乎是構建我的哈希最有效的方法:'$ pepHash [$ count] [$ pepCount] = {$ PEP_SCORE => $ somevar,$ PEP_MR => $ somevar};' – Veltros