Python 2.3 introduced the `sets` module. C implementations of
set data types have now been added to the Python core as two new
built-in types, `set( iterable)` and

>>> a = set('abracadabra') # form a set from a string >>> 'z' in a # fast membership testing False >>> a # unique letters in a set(['a', 'r', 'b', 'c', 'd']) >>> ''.join(a) # convert back into a string 'arbcd' >>> b = set('alacazam') # form a second set >>> a - b # letters in a but not in b set(['r', 'd', 'b']) >>> a | b # letters in either a or b set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l']) >>> a & b # letters in both a and b set(['a', 'c']) >>> a ^ b # letters in a or b but not both set(['r', 'd', 'b', 'm', 'z', 'l']) >>> a.add('z') # add a new element >>> a.update('wxy') # add multiple new elements >>> a set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'x', 'z']) >>> a.remove('x') # take one element out >>> a set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'z'])

The `frozenset` type is an immutable version of `set`.
Since it is immutable and hashable, it may be used as a dictionary key or
as a member of another set.

The `sets` module remains in the standard library, and may be
useful if you wish to subclass the `Set` or `ImmutableSet`
classes. There are currently no plans to deprecate the module.

See Also:

- PEP 218,
*Adding a Built-In Set Object Type* - Originally proposed by Greg Wilson and ultimately implemented by Raymond Hettinger.

See