Skip to content Skip to sidebar Skip to footer

How Does Python's Dict .get() Method Check Default Argument?

I have met a strange Python behavior which is difficult to explain to myself. When I pass a default value for getting a key from a dict - looks like it firstly try to find that def

Solution 1:

it has nothing to do with dict.get

When you call a function in python, arguments are evaluated.

In your case the key exists, but both arguments need to be evaluated before key lookup occurs.

For instance what would "work" would be:

k_dict.get("red") or obj_1.attr4

Since red key exists, the second argument isn't evaluated. It only crashes if red doesn't exist. It doesn't help much in that case (your way of doing it has the merit to catch the error whatever the outcome is at least so keep on doing it!), but if you had some complex computation to perform as the default argument it would:

k_dict.get("red",super_expensive_computation())

is slow even if red exists when:

k_dict.get("red") orsuper_expensive_computation()

is fast when red exists. The or technique relies on the fact that the values cannot be 0, just None. Else just use if "red" in k_dict construct.

Post a Comment for "How Does Python's Dict .get() Method Check Default Argument?"