insert unique data in a list

knifenomad knifenomad at gmail.com
Sun Dec 13 20:24:18 EST 2009


On 12월14일, 오전10시19분, knifenomad <knifeno... at gmail.com> wrote:
> On 12월14일, 오전2시57분, mattia <ger... at gmail.com> wrote:
>
>
>
>
>
> > Il Sun, 13 Dec 2009 16:37:20 +0000, mattia ha scritto:
>
> > > How can I insert non-duplicate data in a list? I mean, is there a
> > > particular option in the creation of a list that permit me not to use
> > > something like:
> > > def append_unique(l, val):
> > >     if val not in l:
> > >         l.append(val)
>
> > > Thanks,
> > > Mattia
>
> > Ok, so you all suggest to use a set. Now the second question, more
> > interesting. Why can't I insert a list into a set? I mean, I have a
> > function that returns a list. I call this function several times and
> > maybe the list returned is the same as another one already returned. I
> > usually put all this lists into another list. How can I assure that my
> > list contains only unique lists? Using set does'n work (i.e. the python
> > interpreter tells me: TypeError: unhashable type: 'list')...
>
> this makes the set type hashable.
>
> class Set(set):
>     __hash__ = lambda self: id(self)
>
> s = Set()
> s.add(1)
> s.add(2)
> s.add(1)
>
> print s
> set([1, 2])
>
> d = {}
> d[s] = 'voila'
>
> print d
> {Set([1,2]):'voila'}
>
> print d[s]
> 'voila'- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -

although it's not what you've asked about. it's intereting to make set
hashable using __hash__.



More information about the Python-list mailing list