]> granicus.if.org Git - python/commitdiff
Add tie-breaker count to preserve sort stability.
authorRaymond Hettinger <python@rcn.com>
Mon, 19 Feb 2007 05:28:28 +0000 (05:28 +0000)
committerRaymond Hettinger <python@rcn.com>
Mon, 19 Feb 2007 05:28:28 +0000 (05:28 +0000)
Lib/heapq.py

index b56d0f96bfd505537f07057e2ecb0e84f70128e6..4c11eb6e87405586952eb8058dee111197915b3f 100644 (file)
@@ -323,10 +323,10 @@ def merge(*iterables):
 
     h = []
     h_append = h.append
-    for it in map(iter, iterables):
+    for itnum, it in enumerate(map(iter, iterables)):
         try:
             next = it.next
-            h_append([next(), next])
+            h_append([next(), itnum, next])
         except _StopIteration:
             pass
     heapify(h)
@@ -334,12 +334,12 @@ def merge(*iterables):
     while 1:
         try:
             while 1:
-                v, next = s = h[0]      # raises IndexError when h is empty
+                v, itnum, next = s = h[0]   # raises IndexError when h is empty
                 yield v
-                s[0] = next()           # raises StopIteration when exhausted
-                siftup(h, 0)            # restore heap condition
+                s[0] = next()               # raises StopIteration when exhausted
+                siftup(h, 0)                # restore heap condition
         except _StopIteration:
-            _heappop(h)                  # remove empty iterator
+            _heappop(h)                     # remove empty iterator
         except IndexError:
             return