Job Offer: Python Ninja or Pirate!

Stargaming stargaming at gmail.com
Mon Dec 10 14:11:00 EST 2007


On Mon, 10 Dec 2007 16:10:16 +0200, Nikos Vergas wrote:

[snip]
>> Problem: In the dynamic language of your choice, write a short program
>> that will:
>>  1. define a list of the following user ids 42346, 77290, 729 (you can
>> hardcode these, but it should
>> still work with more or less ids)
>>  2. retrieve an xml document related to each user at this url "http://
>> api.etsy.com/feeds/xml_user_details.php?id="
>>  3. retrieve the data contained in the city element from each xml
>> document
>>  4. keep a running total of how many users are found in each city 5.
>>  display the total count of users living in each city
[snip]
> 
> i wanted to make it a one liner, but i had to import modules :(
> 
> import sys, xml, urllib
> 
> dummy = [sys.stdout.write(city + ': ' + str(num) + '\n') for city, num
> in set([[(a, o.count(a)) for a in p] for o, p in [2*tuple([[city for
> city in
> ((xml.dom.minidom.parseString(urllib.urlopen('http://api.etsy.com/feeds/
xml_user_details.php?id='
> + str(id)).read()).getElementsByTagName('city')[0].childNodes + [(lambda
> t: (setattr(t, 'data', 'no city'),
> t))(xml.dom.minidom.Text())[1]])[0].data.lower().replace('  ', ' ') for
> id in [71234, 71234, 71234, 71234, 71234, 71234, 42792])]])]][0])]

I suggest `__import__` in such cases. 

Even though I do not qualify for the job, I came up with this (<wink>) 
code (modified list values for demonstration, mixed together from 
previous post and original task):

print '\n'.join('%s: %d'%(x,len(list(y))) for x,y in __import__
('itertools').groupby(sorted(__import__('xml').dom.minidom.parse
(__import__('urllib').urlopen('http://api.etsy.com/feeds/
xml_user_details.php?id=%d'%i)).getElementsByTagName('city')
[0].lastChild.data.title() for i in (71234, 729, 42346, 77290, 729, 
729))))

I still find this rather readable, though, and there is no bad side-
effect magic! :-)

Output should be:

| Chicago: 3
| Fort Lauderdale: 1
| Jersey City And South Florida: 1
| New York: 1

Cheers,



More information about the Python-list mailing list