[Zope] Sorting a list

Dieter Maurer dieter@handshake.de
Mon, 10 Jul 2000 20:44:14 +0200 (CEST)


RC Compaan writes:
 > I have a list:
 > mylist=[('R',31),('I',80),('A',80),('S',23),('E',35),('C',21)]
 > 
 > I want to rebuild the list sorted from high to low on the sequence-item.
 > 
 > When i call  <dtml-in mylist sort=sequence-item reverse> the list gets
 > sorted on the sequence-key not the sequence-item.  As I understand the
 > alphabetical characters are the sequence-keys and the float values are the
 > sequence-items.
 > 
 > Where do misunderstand?
What you see is caused by the following code in
"DocumentTemplate.DT_In.InClass.__init__":

        if has_key('sort'):
            self.sort=sort=args['sort']
            if sort=='sequence-item': self.sort=''


This means, "dtml-in sort=sequence-item" does not sort
by "sequence-item" but by the complete tuple (key,item).

I think, the special treatment of lists of pairs is
altogether a slight misfeature. It would probably
have been better to use a special "dict" attribute
in analogy to the "mapping" attribute to call
for the special pair interpretation.
'sequence-item' should then still be the complete item
and 'sequence-value' the second pair component.
Probably, it is too late by now to change this.


Dieter