Perl Hash Operation
(Redirected from Perl Associative Array Operation)
Jump to navigation
Jump to search
A Perl Hash Operation is a Perl-based associative array operation for a Perl hash.
- Context:
- It can (typically) involve a pandas.DataFrame Method.
- Example(s)
- Counter-Example(s)
- See: pandas.DataFrame Attribute.
References
2011
- (Melli, 2011-09-01) ⇒ Gabor Melli. (2011). “Perl Hash Examples.".
Define a hash
my %coins = ( "Quarter", 25, "Dime", 10, "Nickel", 5) ; my %planetMass= ( mercury ⇒ 0.055, venus ⇒ 0.86, earth ⇒ 1.0, mars ⇒ 0.11, jupiter ⇒ 318, );
- Number of members
my $size = scalar(keys %planetMass);
- Iterate through
while (my ($key, $value) = each(%coins)){ ... } while (my ($key, $value) = each(%$hash_ref) ) { ... }
- Sort a hash
- using an in-line function
# largest to smallest @array = reverse sort { $hash{$a} <=> $hash{$a} } keys %hash;
- Sort a hash - using a subroutine
foreach $key (sort by_value keys %ary) { print $key, '=', $ary{$key}, "\n"; } sub by_value { $ary{$a} cmp $ary{$b}; }
- Sort a hash - descending value through subroutine
sub by_value { $ary{$b} <=> $ary{$a}; }
- Union of Two Hashes
sub union { return { map { %$_ } @_ } }
- or
sub union { +{ map { %$_ } @_ } }
- Print a hash
print %coins; while (my ($key, $value) = each(%coins)){ print "$key, $value\n"; } print map { "$_ ⇒ $hash{$_}\n" } keys %hash;
- print by interpolating the hash into an array
print "@{[ %hash ]}\n";
- print a temporary array variable
my @temp = %hash; print "@temp";
- print a hash reference
print "the keys... “, sort keys %$hash_ref, "...\n";
Delete an element pair.
delete($coins{Penny}); delete($coins{HalfDollar});
Copy a hash
my %hash_copy = %hash; # copy a hash my $href_copy = $href; # copy a hash ref # pick the keys/values to copy my %newRecord_ ; @newRecord_{@OntRecordAttrs} = $RKBRecord[$i]{@OntRecordAttrs} ;
Use hash references
sub foo { my $hash_ref; $hash_ref->{ 'key1' } = 'value1'; $hash_ref->{ 'key2' } = 'value2'; $hash_ref->{ 'key3' } = 'value3'; return $hash_ref; } my $hash_ref = foo();
Maximum key
my $max_ = (sort {$h{$b} <=> $h{$a}} keys %h)[0]
print $max_ ;
my %hashName = (a ⇒ -1, b ⇒ -2, c ⇒ -3);
my $max_ = $hash{each %hashName};
$_ > $max and $max = $_ for values %hashName;
print $max_ ;
use List::Util;
$max_ = $h{ max values %h };
print $max_ ;
- All keys having max value:
my $max = [sort {$b<=>$a} values %h]->[0] ; my @List = map { ($h{$_} == $max) ? $_ : () } keys %h ;
or
sub largest_value_mem (\%) { my $hash = shift; my ($key, @keys) = keys %$hash; my ($big, @vals) = values %$hash; for (0 .. $#keys) { if ($vals [$_] > $big) { $big = $vals [$_]; $key = $keys [$_]; } } $key } print largest_value_mem %hash; # prints 'largest' REF: http://stackoverflow.com/questions/2886872/what-is-the-easiest-way-to-get-a-key-with-the-highest-value-from-a-hash-in-perl