diff options
author | d.grigonis <dgrigonis@users.noreply.github.com> | 2024-05-11 20:55:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-11 20:55:23 (GMT) |
commit | cd4cfa6ed2fd5f866c7be339f1d3cf56aa4d2bad (patch) | |
tree | 4eeb04d2ba3bf799e4b688d79e8d03703f76c7e2 | |
parent | 7e894c2f38f64aed9b259c8fd31880f1142a259d (diff) | |
download | cpython-cd4cfa6ed2fd5f866c7be339f1d3cf56aa4d2bad.zip cpython-cd4cfa6ed2fd5f866c7be339f1d3cf56aa4d2bad.tar.gz cpython-cd4cfa6ed2fd5f866c7be339f1d3cf56aa4d2bad.tar.bz2 |
gh-118932: ChainMap.__contains__ performance improvement (gh-118946)
-rw-r--r-- | Lib/collections/__init__.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index d06d84c..a17100e 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -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) |