наборы Python и словари могут быть оба построены с использованием фигурных скобок:
my_dict = {'a': 1, 'b': 2}
my_set = {1, 2, 3}
Переводчик (и человека читатели) могут различать между ними на основе их содержание. Однако невозможно различать пустой набор и пустой dict, поэтому в этом случае вам нужно использовать set()
для пустых наборов для устранения неоднозначности.
Очень простой тест предполагает, что буквальная конструкция быстрее (python3.5):
>>> timeit.timeit('a = set([1, 2, 3])')
0.5449375328607857
>>> timeit.timeit('a = {1, 2, 3}')
0.20525191631168127
This question охватывает некоторые вопросы выполнения буквенных конструкций над встроенными функциями, хотя и для списков и dicts. Как представляется, резюме состоит в том, что литературные конструкции требуют меньше работы от переводчика.
Обратите внимание, что, несмотря на ваш титул, вы ** не может ** заменить 'набор()' с '{}', но вы можете * * заменить непустое 'набор ((1, 2, 3)) 'с буквальным' {1, 2, 3} ', потому что теперь ясно, что это не словарь. См. Https://docs.python.org/2/library/stdtypes.html#set-types-set-frozenset – jonrsharpe