kromakey a écrit : > On 10 Dec, 19:11, Stargaming <[EMAIL PROTECTED]> wrote: >> 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] >> (snip) > > A simpleton's version: > > #!/usr/local/bin/python > > import urllib > from elementtree import ElementTree as et > > userids = [71234,729,42346,77290,729,729] > url = 'http://api.etsy.com/feeds/xml_user_details.php?id=' > > if __name__ == "__main__": > > city = {} > for userid in userids: > feed = urllib.urlopen(url+str(userid)) > tree = et.parse(feed) > for elem in tree.getiterator('city'): > if not city.has_key(elem.text):city[elem.text] = 1 > else: city[elem.text] += 1 > for k,v in city.items(): > if not k == None:print k,':\t',v
def count_users_by_city(url, userids): urlopen = urllib.urlopen parse = et.parse cities = {} for userid in map(str, userids): feed = urlopen(url+userid) tree = parse(feed) for elem in tree.getiterator('city'): key = elem.text if key in cities: cities[key] += 1 else: cities[key] = 1 return cities if __name__ == '__main__': cities = count_users_by_city(url, userids) print "\n".join("%s:%s" % item for item in cities.items()) Not tested !-) -- http://mail.python.org/mailman/listinfo/python-list