在 Perl 中对数组数组的哈希值进行排序
Sorting a Hash of Hashes of Array of Arrays in Perl
我做了一个散列 (%locus
) 来组织我的数据,当我用 Data::Dumper
打印它时,它显示了数据结构:
'locus8 >9.2668516.276570.GABA3.1.54.6586237.218516.2718570 74280 74440 locus8'
=> {
'3 70.75 0.995018 -1.89 -' => [
[
'window10', 'locus8',
'>9.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74280',
'74400', '-',
'3', '120',
'55.87', '-17.41',
'-11.92', '-10.60',
'-1.32', '1.57',
'-1.58', '0.68',
'2.76', '0.995018'
],
[
'window11', 'locus8',
'>9.2668516.276570.GABA3.1.54.6586237.218516.2718570', '74320',
'74440', '-', '3', '120', '70.75', '-22.97', '-17.28', '-15.07', '-2.21',
'-1.89', '0.75', '1.95', '0.976184'
]
]
},
如何按数组中的最后一个元素对内部数组进行排序 $_[17]
?
[
[
'window11', 'locus8',
'>9.+.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74320',
'74440', '-',
'3', '120',
'70.75', '-22.97',
'-17.28', '-15.07',
'-2.21', '1.55',
'-1.89', '0.75',
'1.95', '0.976184'
],
[
'window10', 'locus8',
'>9.+.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74280',
'74400', '-',
'3', '120',
'55.87', '-17.41',
'-11.92', '-10.60',
'-1.32', '1.57',
'-1.58', '0.68',
'2.76', '0.995018'
],
]
我想保持数据结构但是,用'internal arrays'整理。提前致谢。
我只是猜猜你在找什么,因为你不清楚你想要什么。
for my $outher (values %hash) {
for my $inner (values %$outher) {
@$inner = sort {$a->[17] <=> $b->[17]} @$inner;
}
}
我做了一个散列 (%locus
) 来组织我的数据,当我用 Data::Dumper
打印它时,它显示了数据结构:
'locus8 >9.2668516.276570.GABA3.1.54.6586237.218516.2718570 74280 74440 locus8'
=> {
'3 70.75 0.995018 -1.89 -' => [
[
'window10', 'locus8',
'>9.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74280',
'74400', '-',
'3', '120',
'55.87', '-17.41',
'-11.92', '-10.60',
'-1.32', '1.57',
'-1.58', '0.68',
'2.76', '0.995018'
],
[
'window11', 'locus8',
'>9.2668516.276570.GABA3.1.54.6586237.218516.2718570', '74320',
'74440', '-', '3', '120', '70.75', '-22.97', '-17.28', '-15.07', '-2.21',
'-1.89', '0.75', '1.95', '0.976184'
]
]
},
如何按数组中的最后一个元素对内部数组进行排序 $_[17]
?
[
[
'window11', 'locus8',
'>9.+.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74320',
'74440', '-',
'3', '120',
'70.75', '-22.97',
'-17.28', '-15.07',
'-2.21', '1.55',
'-1.89', '0.75',
'1.95', '0.976184'
],
[
'window10', 'locus8',
'>9.+.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74280',
'74400', '-',
'3', '120',
'55.87', '-17.41',
'-11.92', '-10.60',
'-1.32', '1.57',
'-1.58', '0.68',
'2.76', '0.995018'
],
]
我想保持数据结构但是,用'internal arrays'整理。提前致谢。
我只是猜猜你在找什么,因为你不清楚你想要什么。
for my $outher (values %hash) {
for my $inner (values %$outher) {
@$inner = sort {$a->[17] <=> $b->[17]} @$inner;
}
}