diff options
-rw-r--r-- | Lib/pickle.py | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py index f8ecad5..957a87f 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -508,29 +508,28 @@ class Pickler: def save_dict(self, object): write = self.write save = self.save + items = object.iteritems() if self.bin: write(EMPTY_DICT) - else: - write(MARK + DICT) - - self.memoize(object) - - using_setitems = (self.bin and (len(object) > 1)) + self.memoize(object) + if len(object) > 1: + write(MARK) + for key, value in items: + save(key) + save(value) + write(SETITEMS) + return - if using_setitems: - write(MARK) + else: # proto 0 -- can't use EMPTY_DICT or SETITEMS + write(MARK + DICT) + self.memoize(object) - items = object.items() + # proto 0 or len(object) < 2 for key, value in items: save(key) save(value) - - if not using_setitems: - write(SETITEM) - - if using_setitems: - write(SETITEMS) + write(SETITEM) dispatch[DictionaryType] = save_dict if not PyStringMap is None: |