REQ: Small Perl to Python conversion needed
Steven Bethard
steven.bethard at gmail.com
Thu Jun 2 20:32:45 EDT 2005
Koncept wrote:
> #!/usr/bin/perl
>
> # Parse comma delimited lines and create a final frequency hash
> # Real example would read a file line by line
> my %dict = {};
> my @lines = ( "1,2,3,4,5", "2,3,4,5", "3,4,5", "4,5", "5" );
> foreach(@lines) { map( $dict{ $_ }++, split( "," ) ); }
> foreach( sort byKeys keys %dict ) {
> print "Key: $_\tFrequency: ", "*" x $dict{ $_ }, "\n"
> if $dict{ $_ } =~ /\d+/g;
> }
> sub byKeys { $dict{$b} <=> $dict{$a} }
>
> __DATA__
> Results:
> Key: 5 Frequency: *****
> Key: 4 Frequency: ****
> Key: 3 Frequency: ***
> Key: 2 Frequency: **
> Key: 1 Frequency: *
I don't speak Perl, but based on your output, I'd probably do something
like:
py> lines = ["1,2,3,4,5", "2,3,4,5", "3,4,5", "4,5", "5"]
py> counts = {}
py> for items in lines:
... for item in items.split(','):
... counts[item] = counts.get(item, 0) + 1
...
py> for key in sorted(counts, key=counts.__getitem__, reverse=True):
... print 'Key: %s Frequency: %s' % (key, '*'*counts[key])
...
Key: 5 Frequency: *****
Key: 4 Frequency: ****
Key: 3 Frequency: ***
Key: 2 Frequency: **
Key: 1 Frequency: *
I'm probably missing a few subtleties, but hopefully this will get you
started.
STeVe
More information about the Python-list
mailing list