Sorting a multidimensional array by multiple keys
Paulo da Silva
psdasilvaX at esotericaX.ptX
Sun Apr 1 22:03:23 EDT 2007
Rehceb Rotkiv escreveu:
> Hello everyone,
>
> can I sort a multidimensional array in Python by multiple sort keys? A
> litte code sample would be nice!
class MyList(list):
# This is the index of the element to be compared
CmpIndex=0
# Comparision methods
@staticmethod
def __cmp_pars(x,y):
if isinstance(x,MyList):
x=x[MyList.CmpIndex]
if isinstance(y,MyList):
y=y[MyList.CmpIndex]
return x,y
def __cmp__(self,other):
s,o=MyList.__cmp_pars(self,other)
return cmp(s,o)
def __lt__(self,other):
s,o=MyList.__cmp_pars(self,other)
return s<o
def __le__(self,other):
s,o=MyList.__cmp_pars(self,other)
return s<=o
def __gt__(self,other):
s,o=MyList.__cmp_pars(self,other)
return s>o
def __ge__(self,other):
s,o=MyList.__cmp_pars(self,other)
return s>=o
def __eq__(self,other):
s,o=MyList.__cmp_pars(self,other)
return s==o
def __ne__(self,other):
s,o=MyList.__cmp_pars(self,other)
return s!=o
Use:
x=MyList(<list of lists>)
MyList.CmpIndex=2 # Compare by index 2
x.sort()
May be there is a better solution ...
HTH
Paulo
More information about the Python-list
mailing list