Example of the wrong sort:
class Node: def __init__(self, name, url, order, pid, id): self.name = name self.url = url self.order = order self.pid = pid self.id = id def __repr__(self): return '%s [order: %s]' % (self.url, self.order) def mycmp(x,y): print "COMPARING", x, y if x.pid == y.pid: if x.order != y.order: return cmp(x.order,y.order) return cmp(x.url,y.url) #return cmp(x.pid,y.pid) return cmp(x.url,y.url) list = [ Node('top','/', order=1, pid=0, id=1000), Node('ham','/test/ham/', order=1, pid=400, id=21), Node('ham','/test2/spam/', order=1, pid=300, id=32), Node('ham','/test2/spam/spam/', order=1, pid=32, id=320), Node('ham','/test2/ham/', order=2, pid=300, id=31), Node('eggs','/test/ham/eggs/', order=1, pid=21, id=121), Node('eggs','/test2/ham/eggs/', order=1, pid=21, id=1210), Node('spam','/test2/', order=10, pid=1000, id=300), Node('spam','/test/', order=1, pid=1000, id=400) ] print "++++++++++++++ BEFORE SORTING +++++++++++++" for item in list: print item list.sort(mycmp) print "++++++++++++++ AFTER SORTING +++++++++++++" for item in list: print item ~ -- Ksenia -- http://mail.python.org/mailman/listinfo/python-list