Merge sorted lists in python

前端 未结 9 988
花落未央
花落未央 2020-12-19 00:50

I have a bunch of sorted lists of objects, and a comparison function

class Obj :
    def __init__(p) :
        self.points = p
def cmp(a, b) :
    return a.p         


        
9条回答
  •  一向
    一向 (楼主)
    2020-12-19 01:19

    I like Roberto Liffredo's answer. I didn't know about heapq.merge(). Hmmmph.

    Here's what the complete solution looks like using Roberto's lead:

    class Obj(object):
        def __init__(self, p) :
            self.points = p
        def __cmp__(self, b) :
            return cmp(self.points, b.points)
        def __str__(self):
            return "%d" % self.points
    
    a = [Obj(1), Obj(3), Obj(8)]
    b = [Obj(1), Obj(2), Obj(3)]
    c = [Obj(100), Obj(300), Obj(800)]
    
    import heapq
    
    sorted = [item for item in heapq.merge(a,b,c)]
    for item in sorted:
        print item
    

    Or:

    for item in heapq.merge(a,b,c):
        print item
    

提交回复
热议问题