Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: sort HoH by second level values in specific order

by Laurent_R (Canon)
on Dec 15, 2017 at 20:43 UTC ( [id://1205622]=note: print w/replies, xml ) Need Help??


in reply to sort HoH by second level values in specific order

Hi lener,

this is basically the same idea as poj (and reusing poj's input data), except that this does not bother to create an explicit temporary array:

#!/usr/bin/perl use strict; use warnings; use feature "say"; my $free_space = { node3 => { cores => 11, mem => 200 }, node10 => { cores => 10, mem => 900 }, node12 => { cores => 11, mem => 500 }, node23 => { cores => 12, mem => 350 }, node456 => { cores => 12, mem => 400 }, node534 => { cores => 12, mem => 400 }, }; say "@$_" for sort { $b->[0] <=> $a->[0] or $b->[1] <=> $a->[1] or $a- +>[2] cmp $b->[2] } map { [$free_space->{$_}{cores}, $free_space->{$_}{mem}, $_ ]} +keys %$free_space;
This gives the following output:
12 400 node456 12 400 node534 12 350 node23 11 500 node12 11 200 node3 10 900 node10
which I believe is what you want.

This is the idea of a data pipeline. The code should be read from bottom to top (and right to left). The map in the second line creates an in-memory list of anonymous arrays, which is then sorted and displayed by the first line.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1205622]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2024-04-19 20:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found