### Re: How to compare hash values within the same hash?

by Marshall (Abbot)
 on Sep 25, 2013 at 10:00 UTC ( #1055642=note: print w/replies, xml ) Need Help??

I think you want the peg counts (3rd printout below), but I showed some other stuff just for fun.
#!usr/bin/perl -w use strict; #http://perlmonks.org/?node_id=1055552 my %hash = ( key1 => 10, key3 => 3, key2 => 10, key4 => 5, key5 => 10, key6 => 3, ); # The keys don't matter. # What matters is the histogram of the values. my %histo; #histogram of each key's summary data my %pegs; #peg count's of each key #a bit brain boggling, but it works for a sum... #the (my \$value's) are pre-computed at start of the loop # foreach my \$value (values %hash) { \$pegs{\$value}++; \$histo{\$value}+=\$value; } # # various print formats... # print "histo sort by key:\n"; foreach my \$x (sort {\$a <=> \$b} keys %histo) { print "\$x => \$histo{\$x}\n"; } print "\nhisto sort by inverse value:\n"; foreach my \$x (sort {\$histo{\$b} <=> \$histo{\$a}} keys %histo) { print "\$x => \$histo{\$x}\n"; } print "\nPeg counts of values\n"; foreach my \$x (sort {\$pegs{\$a} <=> \$pegs{\$b}} keys %pegs) { print "\$x => \$pegs{\$x}\n"; } =summary of prints: sort by key of sums: 3 => 6 #keys 3,6 5 => 5 #keys 5 10 => 30 #keys 1,2,5 sort by inverse value of sums: (note swap of \$b and \$a) #I did that to make it a bit more interesting... 10 => 30 3 => 6 5 => 5 Peg counts of values: (value and number of times seen) 5 => 1 3 => 2 10 => 3 =cut
There are a number of ways to present the max (eg 10 => 3) peg count, but what do you want if say 3=>3 also?

Create A New User
Node Status?
node history
Node Type: note [id://1055642]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2017-12-16 10:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
What programming language do you hate the most?

Results (449 votes). Check out past polls.

Notices?