Простой Python. Современный стиль программирования (Любанович) - страница 45

Как и в случае со списками, если вам нужно внести в словарь изменение, оно отразится для всех имен, которые ссылаются на него.

>>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}

>>>> save_signals = signals

>>>> signals['blue'] = 'confuse everyone'

>>>> save_signals

>{'blue': 'confuse everyone', 'green': 'go',

>'red': 'smile for the camera', 'yellow': 'go faster'}

Чтобы скопировать ключи и значения из одного словаря в другой и избежать этого, вы можете воспользоваться функцией copy():

>>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}

>>>> original_signals = signals.copy()

>>>> signals['blue'] = 'confuse everyone'

>>>> signals

>{'blue': 'confuse everyone', 'green': 'go',

>'red': 'smile for the camera', 'yellow': 'go faster'}

>>>> original_signals

>{'green': 'go', 'red': 'smile for the camera', 'yellow': 'go faster'}

Множества

Множество похоже на словарь, значения которого опущены. Он имеет только ключи. Как и в случае со словарем, ключи должны быть уникальны. Если вам нужно прикрепить к ключу некую информацию, воспользуйтесь словарем.

Раньше кое-где теорию множеств преподавали в начальной школе наряду с основами математики. Если в вашей школе такого не было (или было, но вы в это время смотрели в окно, как и я), на рис. 3.1 можете увидеть объединения и пересечения множеств.

Предположим, вы хотите объединить два множества, которые содержат несколько общих ключей. Поскольку множество должно содержать только уникальные значения, объединение двух множеств будет содержать лишь одно включение каждого ключа. Пустое множество — это множество, содержащее ноль элементов. Основываясь на рис. 3.1, можно сказать, что пустым будет множество, которое содержит женские имена, начинающиеся с буквы «Х».


Рис. 3.1. Распространенные операции с множествами

Создание множества с помощью функции set()

Чтобы создать множество, вам следует использовать функцию set() или разместить в фигурных скобках одно или несколько разделенных запятыми значений, как показано здесь:

>>>> empty_set = set()

>>>> empty_set

>set()

>>>> even_numbers = {0, 2, 4, 6, 8}

>>>> even_numbers

>{0, 8, 2, 4, 6}

>>>> odd_numbers = {1, 3, 5, 7, 9}

>>>> odd_numbers

>{9, 3, 1, 5, 7}

Как и в случае со словарем, порядок ключей в множестве не имеет значения.


Поскольку пустые квадратные скобки [] создают пустой список, вы могли бы рассчитывать на то, что пустые фигурные скобки {} создают пустое множество. Вместо этого пустые фигурные скобки создают пустой словарь. Именно поэтому интерпретатор выводит пустое множество как set() вместо {}. Почему так происходит? Словари появились в Python раньше и успели захватить фигурные скобки в свое распоряжение.