【发布时间】:2011-12-13 08:03:12
【问题描述】:
提前感谢您的帮助。
我有一个名为 %pepHash 的数组,每个 $count 有 174 个“计数”和多个“肽”。
这是哈希的 sn-p:
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
首先,我不太擅长数据结构,所以任何关于多维哈希的更好建议都会很好。
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
【问题讨论】:
标签: perl sorting multidimensional-array hash