Difference between dict and set (python)

There were no set literals in Python 2, historically curly braces were only used for dictionaries. Sets could be produced from lists (or any iterables):

set([1, 2, 3])
set([i for i in range(1, 3)])

Python 3 introduced set literals and comprehensions (see PEP-3100) which allowed us to avoid intermediate lists:

{1, 2, 3}
{i for i in range(1, 3)}

The empty set form, however, was reserved for dictionaries due to backwards compatibility. References from [Python-3000] sets in P3K? states:

I’m sure we can work something out — I agree, {} for empty set and {:}
for empty dict would be ideal, were it not for backward compatibility. I
liked the “special empty object” idea when I first wrote the PEP (i.e.,
have {} be something that could turn into either a set or dict), but one
of the instructors here convinced me that it would just lead to confusion
in newcomers’ minds (as well as being a pain to implement).

The following message describes these rules better:

I think Guido had the best solution. Use set() for empty sets, use {}
for empty dicts, use {genexp} for set comprehensions/displays, use
{1,2,3} for explicit set literals, and use {k1:v1, k2:v2} for dict
literals. We can always add {/} later if demand exceeds distaste.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)