]> granicus.if.org Git - python/commitdiff
Apply heapq.nlargest() to find best matches.
authorRaymond Hettinger <python@rcn.com>
Sun, 13 Jun 2004 09:57:33 +0000 (09:57 +0000)
committerRaymond Hettinger <python@rcn.com>
Sun, 13 Jun 2004 09:57:33 +0000 (09:57 +0000)
Lib/difflib.py

index c074b190658b0dacbb107b0e63ca092aedc3147c..85a1c9cb70abefd16075d89d3d6d722b33126c8b 100644 (file)
@@ -29,6 +29,8 @@ __all__ = ['get_close_matches', 'ndiff', 'restore', 'SequenceMatcher',
            'Differ','IS_CHARACTER_JUNK', 'IS_LINE_JUNK', 'context_diff',
            'unified_diff']
 
+import heapq
+
 def _calculate_ratio(matches, length):
     if length:
         return 2.0 * matches / length
@@ -703,9 +705,9 @@ def get_close_matches(word, possibilities, n=3, cutoff=0.6):
             result.append((s.ratio(), x))
 
     # Move the best scorers to head of list
-    result.sort(reverse=True)
+    result = heapq.nlargest(result, n)
     # Strip scores for the best n matches
-    return [x for score, x in result[:n]]
+    return [x for score, x in result]
 
 def _count_leading(line, ch):
     """