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
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
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
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
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
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