Re: REQ: Small Perl to Python conversion needed

2005-06-02 Thread Koncept
In article <[EMAIL PROTECTED]>, Steven Bethard
<[EMAIL PROTECTED]> wrote:

> 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


Thanks Steven. This helped a lot.  Exactly what I was looking for

-- 
Koncept << 
"The snake that cannot shed its skin perishes. So do the spirits who are
prevented from changing their opinions; they cease to be a spirit."  -Nietzsche
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: REQ: Small Perl to Python conversion needed

2005-06-02 Thread Steven Bethard
John Machin wrote:
> freq_dict = {}
> ...
> if thing in freq_dict:
> freq_dict[thing] += 1
> else:
> freq_dict[thing] = 1
> 
> or, less plainly,
> 
> freq_dict[thing] = freq_dict.get(thing, 0) + 1

or

try:
 freq_dict[thing] += 1
except KeyError:
 freq_dict[thing] = 1

STeVe
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: REQ: Small Perl to Python conversion needed

2005-06-02 Thread Ivan Van Laningham
Hi All--

John Machin wrote:
> 
> > how to duplicate the following bit of code using Python dictionaries.
> >
> 
> [expletives deleted]
> 
+1 QOTW

Metta,
Ivan
--
Ivan Van Laningham
God N Locomotive Works
http://www.andi-holmes.com/
http://www.foretec.com/python/workshops/1998-11/proceedings.html
Army Signal Corps:  Cu Chi, Class of '70
Author:  Teach Yourself Python in 24 Hours
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: REQ: Small Perl to Python conversion needed

2005-06-02 Thread John Machin
Koncept wrote:
> Howdie Python folks! I am very new to Python ( 3rd day now ) and it has
> already earned its place as my fav. language to work in.  I hope to
> continue, and I really would appreciate some good resources if anybody
> would care to contribute.
> 
> My current head-scratcher concerns something I can do in Perl which I
> would like to have duplicated for Python. I have noticed that it is not
> possible to increment an unset value in Python, so I would like to know
> how to duplicate the following bit of code using Python dictionaries.
> 

[expletives deleted]

freq_dict = {}
...
if thing in freq_dict:
 freq_dict[thing] += 1
else:
 freq_dict[thing] = 1


or, less plainly,

freq_dict[thing] = freq_dict.get(thing, 0) + 1

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: REQ: Small Perl to Python conversion needed

2005-06-02 Thread Steven Bethard
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
-- 
http://mail.python.org/mailman/listinfo/python-list


REQ: Small Perl to Python conversion needed

2005-06-02 Thread Koncept

Howdie Python folks! I am very new to Python ( 3rd day now ) and it has
already earned its place as my fav. language to work in.  I hope to
continue, and I really would appreciate some good resources if anybody
would care to contribute.

My current head-scratcher concerns something I can do in Perl which I
would like to have duplicated for Python. I have noticed that it is not
possible to increment an unset value in Python, so I would like to know
how to duplicate the following bit of code using Python dictionaries.

#!/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: *

-- 
Koncept << 
"The snake that cannot shed its skin perishes. So do the spirits who are
prevented from changing their opinions; they cease to be a spirit."  -Nietzsche
-- 
http://mail.python.org/mailman/listinfo/python-list