Kaydet (Commit) 064567e4 authored tarafından Tim Peters's avatar Tim Peters

save_dict(): Untangled most of the bin-vs-not-bin logic. Also used

iteritems() instead of materializing a (possibly giant) list of the
items.
üst 21c18f0b
......@@ -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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment