Many algorithms need to work with simple containers of data values,
irrespective of order or any key. This is a simple set of objects, which
is supported by the Python set container. We'll look at Sets from a number
of viewpoints: semantics, literal values, operations, comparison
operators, statements, built-in functions and methods.
A set is, perhaps the simplest possible
container, since it contains objects in no particular order with no
particular identification. Objects stand for themselves. With a
sequence, objects are identified by position. With a mapping, objects
are identified by some key. With a set, objects
stand for themselves.
Since each object stands for itself, elements of a
set cannot be duplicated. A
list or tuple, for
example, can have any number of duplicate objects. For example, the
tuple ( 1, 1, 2, 3 ) has four
elements, which includes two copies of the integer 1;
if we create a set from this
tuple, the set will only
have three elements.
A set has large number of operations for
unions, intersections, and differences. A common need is to examine a
set to see if a particular object is a member of
that set, or if one set is
contained within another set.
A set is mutable, which means that it
cannot be used as a key for a dict (see Chapter 15, Mappings and Dictionaries
for more information.) In order to use a
set as a dict key, we can
create a frozenset, which is an immutable copy of
the original set. This allows us to accumulate a
set of values to create a
dict key.