]> granicus.if.org Git - python/commitdiff
Issue 6370: Performance issue with collections.Counter().
authorRaymond Hettinger <python@rcn.com>
Mon, 29 Jun 2009 18:30:43 +0000 (18:30 +0000)
committerRaymond Hettinger <python@rcn.com>
Mon, 29 Jun 2009 18:30:43 +0000 (18:30 +0000)
Lib/collections.py

index bd5d3e86f9d32dd6ca3ba9197d1bafe3321ef672..f255919f0ffa399d38e66e6b2575eb5573e545cf 100644 (file)
@@ -421,13 +421,15 @@ class Counter(dict):
         if iterable is not None:
             if isinstance(iterable, Mapping):
                 if self:
+                    self_get = self.get
                     for elem, count in iterable.items():
-                        self[elem] += count
+                        self[elem] = count + self_get(elem, 0)
                 else:
                     dict.update(self, iterable) # fast path when counter is empty
             else:
+                self_get = self.get
                 for elem in iterable:
-                    self[elem] += 1
+                    self[elem] = 1 + self_get(elem, 0)
         if kwds:
             self.update(kwds)