Re: [Zope] eliminating dupes in a list
sathya <linuxcraft@redspice.com> asked:
I have a list to pass in as a parameter to dtml-in but before doing that I would like to eliminate duplicates form the list. ie in ['1','2','1'] I want to skip the duplicate 1. is there a zope hack for this or do I have to use an external method
This requires some Python expression trickery which can't (currently) be done within DTML (filter and map aren't available to DTML). You are probably better off using a PythonMethod for such logic. For grins, I used the Python interpreter to bang out the following Python expression: filter( None, map( lambda i, d={}: ( i, None )[ d.has_key(i) or d.update( {i: 1} ) or 0 ] , foo ) ) This is too convoluted to use in production code (and it strips out 0 values, too) -- much better a nice, straightforward, "Pythonic" solution, a Python method 'uniq' taking a single argument, 'items': d = {} for item in items: if not d.has_key( item ): d.update( { item: 1 } ) return d.keys() Call from DTML: <dtml-in "uniq( myItems )" sort> ... </dtml-in> -- ========================================================= Tres Seaver tseaver@digicool.com tseaver@palladion.com
participants (1)
-
Tres Seaver