]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-118932: ChainMap.__contains__ performance improvement (gh-118946)
authord.grigonis <dgrigonis@users.noreply.github.com>
Sat, 11 May 2024 20:55:23 +0000 (23:55 +0300)
committerGitHub <noreply@github.com>
Sat, 11 May 2024 20:55:23 +0000 (15:55 -0500)
Lib/collections/__init__.py

index d06d84cbdfcc364883d1e4a6439b33a5028e7957..a17100e6c02a0e512dc451b12549dd83afd683d9 100644 (file)
@@ -1016,7 +1016,7 @@ class ChainMap(_collections_abc.MutableMapping):
         return self.__missing__(key)            # support subclasses that define __missing__
 
     def get(self, key, default=None):
-        return self[key] if key in self else default
+        return self[key] if key in self else default    # needs to make use of __contains__
 
     def __len__(self):
         return len(set().union(*self.maps))     # reuses stored hash values if possible
@@ -1028,7 +1028,10 @@ class ChainMap(_collections_abc.MutableMapping):
         return iter(d)
 
     def __contains__(self, key):
-        return any(key in m for m in self.maps)
+        for mapping in self.maps:
+            if key in mapping:
+                return True
+        return False
 
     def __bool__(self):
         return any(self.maps)