check if the values are prensent in a list of values

Matt Nordhoff mnordhoff at mattnordhoff.com
Tue Sep 9 21:00:41 CEST 2008


Emile van Sebille wrote:
> flit wrote:
>> Hello All,
>>
>> I will appreciate the help from the more skillfull pythonistas..
>>
>> I have a small app that generates a sequence like
>>
>> 00341
>> 01741
>> 03254
> 
> Consider using a dict with sorted tuple keys, eg
> 
> d = {}
> 
> for seq in ['00341','01741','03254']:
>     ky = list(seq)
>     ky.sort()
>     d[tuple(ky)] = None
> 
> 
> then d.keys() are the unique combinations.
> 
> HTH,
> 
> Emile

I'm not judging whether this is a good solution or not, but that's a
silly use of a dict. A set would be better.

s = set()
for seq in ['00341','01741','03254']:
    s.add(tuple(sorted(ky)))

Then you just, well, access the set directly, instead of using d.keys()
or something.

(I also replaced the sorting with the sorted() function for brevity.
This all assumes you have at least Python 2.4...)

>> This values I am putting in a list.
>>
>> So I have a list = [00341,01741,03254]
>>
>> after the programs find the sequence 03401 this sequence is "new" so
>> it appends on the list. But I want to avoid that as the   values are
>> already on the first sequence of the list (00341).
>> If I try to  use a "in" statement it will give false. as 00341 is
>> different from 00341 (but for my goal not..)
>>
>>
>> How can I check against this list and avoid to put "different"
>> sequences but same values?
>>
>> as 34100 --> dont append on the list
>> 14300 ---> dont append on the list
>> 05321 --> append to the list.
>>
>> Am I doing some conceptual error using lists?
>> There is a better approach?
>>
>> Thanks
-- 



More information about the Python-list mailing list