[Python-3000] Set literal

Guido van Rossum guido at python.org
Fri Jan 25 05:12:05 CET 2008

For the record, I'm thinking Raymond has won this argument fair and
square, and I'm withdrawing my opposition.

I hope it isn't too confusing that {1: 1} creates a *mutable* dict
while {1} creates an *immutable* frozenset. I still find this slightly
inelegant. But the practicality of being able to treat set literals as
compile-time constants wins me over.

(I suspect for a 2-element set of ints or strings, translating "x in
{C1, C2}" into "x in (C1, C2)" might actually be a slight win since
probing a tuple must be much faster than probing a set; but that's a


On Jan 24, 2008 7:56 PM, Raymond Hettinger <python at rcn.com> wrote:
> [Jim Jewett]
> > I thought you tried changing those tuples to frozensets
> >(because it was semantically better), and found that it
> > didn't actually win for tuples of length 2 or 3.
> The sets were faster.  The automatic transformation didn't
> go in because it changed semantics -- the searched for item
> would need to be hashable -- the tuple search only requires
> an equality test.
> Raymond
> _______________________________________________
> Python-3000 mailing list
> Python-3000 at python.org
> http://mail.python.org/mailman/listinfo/python-3000
> Unsubscribe: http://mail.python.org/mailman/options/python-3000/guido%40python.org

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-3000 mailing list