Re: REQ: Small Perl to Python conversion needed
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
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
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
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
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
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