Python sets which support multiple same elements
Andreas Tawn
andreas.tawn at ubisoft.com
Fri May 20 07:53:55 EDT 2011
> For example, I was writing a program to detect whether two strings are
> anagrams of each other. I had to write it like this:
>
> def isAnagram(w1, w2):
> w2=list(w2)
> for c in w1:
> if c not in w2:
> return False
> else:
> w2.remove(c)
> return True
>
> But if there was a data structure in python which supported duplicate
> elements(lets call it dset), then I could just write:
>
> def inAnagram(w1,w2):
> return dset(w1)==dset(w2)
>
> Example of some dset methods:
> {1,2,3,3} intersection {4,1,2,3,3,3} == {1,2,3,3}
> {1,2,3,3} union {4,1,2,3,3,3} == {1,2,3,3,3,4}
> {4,1,2,3,3,3} difference {1,2,3,3} == {4,3}
>
> Do you think that it would be a good idea to add this kind of data
> structure to python? Or did I overlook some other easy way to solve
> this kind of problems?
Just to do the anagram problem you could do...
def isAnagram(w1, w2):
return sorted(w1) == sorted(w2)
To do the set-like operations, I guess that unless there's some itertools witchcraft available, you'd have to make your own dset type that inherits from list. Then you can define your own intersection/union etc. methods.
Cheers,
Drea
More information about the Python-list
mailing list