diff --git a/03-dict-set/missing.py b/03-dict-set/missing.py index 609d39e..95ec295 100644 --- a/03-dict-set/missing.py +++ b/03-dict-set/missing.py @@ -60,8 +60,7 @@ """ -from collections import UserDict -from collections import abc +from collections import UserDict, abc def _upper(x): @@ -73,12 +72,16 @@ def _upper(x): class DictSub(dict): def __missing__(self, key): - return self[_upper(key)] + if _upper(key) in self: + return self[_upper(key)] + raise KeyError(key) class UserDictSub(UserDict): def __missing__(self, key): - return self[_upper(key)] + if _upper(key) in self: + return self[_upper(key)] + raise KeyError(key) class SimpleMappingSub(abc.Mapping): @@ -105,7 +108,9 @@ def __getitem__(self, key): try: return self._data[key] except KeyError: - return self[_upper(key)] + if _upper(key) in self._data: + return self[_upper(key)] + raise KeyError(key) class DictLikeMappingSub(SimpleMappingSub): @@ -113,7 +118,9 @@ def __getitem__(self, key): try: return self._data[key] except KeyError: - return self[_upper(key)] + if _upper(key) in self: + return self[_upper(key)] + raise KeyError(key) def get(self, key, default=None): return self._data.get(key, default)