Don't rely on the dictupdate for defaults.py

defaults.py can sometimes throw an exception if its trying to dictupdate an empty dict. This removes the dictupdate call and makes it a little more clear on what is going on as it traverses the possible places to find the value.