How do I make a defaultdict safe for unexpecting clients?
Posted
by ~miki4242
on Stack Overflow
See other posts from Stack Overflow
or by ~miki4242
Published on 2010-06-13T10:05:04Z
Indexed on
2010/06/13
10:12 UTC
Read the original article
Hit count: 188
Several times (even several in a row) I've been bitten by the defaultdict bug.
d = defaultdict(list)
...
try:
v = d["key"]
except KeyError:
print "Sorry, no dice!"
For those who have been bitten too, the problem is evident: when d has no key 'key', the v = d["key"]
magically creates an empty list and assigns it to both d["key"] and v instead of raising an exception. Which can be quite a pain to track down if d comes from some module whose details one doesn't remember very well.
I'm looking for a way to take the sting out of this bug. For me, the best solution would be to somehow disable a defaultdict's magic before returning it to the client.
© Stack Overflow or respective owner