Question

I'm dealing with error handling with dictionaries. Is there a slick way to check if each one of these keys is in the dictionary that I'm searching without skipping over them all (by putting them into one try block) if one generates an error?

Obviously I can check for each key one at a time and that works fine, but I'm looking for a nicer/prettier looking way to do it.

Code:

try:
    categories = self.getList(dict[categories])
except KeyError:
    print "No categories found!"

try:
    interests = self.getList(dict[interests])
except KeyError:
    print "No interests found!"

try:
    shops_at = self.getList(dict[shops_at])
except KeyError:
    print "No shops_at found!"

try:
    eats_at = self.getList(dict[eats_at])
except KeyError:
    print "No eats_at found!"
Was it helpful?

Solution

Here's a way to duplicate the functionality of the above code with a loop.

params = {categories: "categories", interests: "interests",
        shops_at: "shops_at", eats_at: "eats_at"}

for k in params:
    try:
        value = self.getList(dict[k])
    except KeyError:
        print "No %s found!" % params[k]
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top