sorting question
Ksenia Marasanova
ksenia.marasanova at gmail.com
Wed Aug 10 06:44:09 EDT 2005
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
More information about the Python-list
mailing list