diff options
author | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2018-02-11 08:30:31 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-11 08:30:31 (GMT) |
commit | 3793f95f98c3112ce447288a5bf9899eb9e35423 (patch) | |
tree | 7c7b62ce2d585c9ec90ed1b502dd4881bd37e739 /Lib/collections/__init__.py | |
parent | 8d1f2f40389c476d9240ec87a33da0373597c6af (diff) | |
download | cpython-3793f95f98c3112ce447288a5bf9899eb9e35423.zip cpython-3793f95f98c3112ce447288a5bf9899eb9e35423.tar.gz cpython-3793f95f98c3112ce447288a5bf9899eb9e35423.tar.bz2 |
bpo-32792: Preserve mapping order in ChainMap() (GH-5586)
Diffstat (limited to 'Lib/collections/__init__.py')
-rw-r--r-- | Lib/collections/__init__.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index f0b41fd..9a753db 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -920,7 +920,10 @@ class ChainMap(_collections_abc.MutableMapping): return len(set().union(*self.maps)) # reuses stored hash values if possible def __iter__(self): - return iter(set().union(*self.maps)) + d = {} + for mapping in reversed(self.maps): + d.update(mapping) # reuses stored hash values if possible + return iter(d) def __contains__(self, key): return any(key in m for m in self.maps) |