set Python e dizionari possono essere entrambi costruiti utilizzando le parentesi graffe:
my_dict = {'a': 1, 'b': 2}
my_set = {1, 2, 3}
L'interprete (e lettori umani) in grado di distinguere tra di loro in base alla loro contenuto. Tuttavia non è possibile distinguere tra un set vuoto e un dict vuoto, quindi in questo caso è necessario utilizzare set()
per i set vuoti in cui disambiguare.
Un test molto semplice suggerisce che la costruzione letterale è più veloce (python3.5):
>>> timeit.timeit('a = set([1, 2, 3])')
0.5449375328607857
>>> timeit.timeit('a = {1, 2, 3}')
0.20525191631168127
This question copre alcuni problemi di prestazioni delle costruzioni letterali oltre funzioni interne, anche se per liste e dicts. Il riassunto sembra essere che le costruzioni letterali richiedono meno lavoro dall'interprete.
Si noti che, nonostante il titolo, è possibile ** non ** sostituire 'set()' con '' {}, ma si * può * sostituire un non vuoto 'set ((1, 2, 3)) 'con un letterale' {1, 2, 3} ', perché ora è chiaro che non è un dizionario. Vedere https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset – jonrsharpe