Difference between dict and set (python)

后端 未结 3 547
难免孤独
难免孤独 2020-12-13 08:20

So, I know that this,

a = {}  # dict

Constructs an empty dictionary. Now, I also picked up that this,

b = {1, 2, 3}  # set
         


        
3条回答
  •  独厮守ぢ
    2020-12-13 09:12

    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.

提交回复
热议问题