in reply to
Re: sort hash of arrays of arrays
in thread sort hash of arrays of arrays
Ok, sorry, it's not a multi-dimensional array this way.
In my script I build it up from a tab-delimited text file as follows:
my %hash;
while (<FILE>) {
chomp;
my @line = split("\t");
push(@{$hash{$line[1]}}, [@line]);
}
This, at the end, is a 3-D array.
How can I do the sort based on the 2nd item of the innermost array?
Thank you,
maladav
Re^3: sort hash of arrays of arrays by BrowserUk (Pope) on Oct 31, 2012 at 15:16 UTC |
{
1 => [
[1, 2, 3],
[6, 7, 8],
[16, 17, 18],
[26, 27, 28]
],
2 => [
[2, 3, 4],
[7, 8, 9],
[17, 18, 19],
[27, 28, 29]
],
3 => [
[3, 4, 5],
[8, 9, 10],
[18, 19, 20],
[28, 29, 30]
],
4 => [
[4, 5, 6],
[9, 10, 11],
[19, 20, 21],
[29, 30, 31]
],
}
The second item of which innermost array?
Each outer array contains multiple arrays. Which of those do you which to sort on? The first? The last? All of them?
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP Neil Armstrong
| [reply] [d/l] |
|
{
1 => [
[26, 27, 28],
[16, 17, 18],
[6, 7, 8],
[1, 2, 3]
],
2 => [
[27, 28, 29],
[17, 18, 19],
[7, 8, 9],
[2, 3, 4],
],
3 => [
[28, 29, 30],
[18, 19, 20],
[8, 9, 10],
[3, 4, 5]
],
4 => [
[29, 30, 31],
[19, 20, 21],
[9, 10, 11],
[4, 5, 6]
],
}
So for the first set, values 2, 7, 17 and 27 were compared to get the right order.
I hope this clarifies my problem.
Thanks
| [reply] [d/l] |
|
@{ $hash{$_} } = sort{ $b->[1] <=> $a->[1] } @{ $hash{$_} } for keys %
+hash;;
pp \%hash;;
{
1 => [[26, 27, 28], [16, 17, 18], [6, 7, 8], [1, 2, 3]],
2 => [[27, 28, 29], [17, 18, 19], [7, 8, 9], [2, 3, 4]],
3 => [[28, 29, 30], [18, 19, 20], [8, 9, 10], [3, 4, 5]],
4 => [[29, 30, 31], [19, 20, 21], [9, 10, 11], [4, 5, 6]],
}
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP Neil Armstrong
| [reply] [d/l] |
|
|
|
|