✅ Решения

⚡ Кратко: решения

Summary session 9 повторяет множества, хеширование, set-операции, frozenset и основы словарей.

set нужен для уникальности и операций над наборами.

frozenset полезен там, где нужен неизменяемый и хешируемый набор.

dict хранит пары ключ-значение и быстро ищет значение по ключу.

Ключи dict должны быть хешируемыми, поэтому list, set и dict не подходят.

Оператор in для словаря проверяет ключи.

Для сравнимого вывода set лучше сортировать.

Главная цель summary - обнаружить пробелы перед продолжением темы словарей.

Топ-3 ошибки: ожидать от set сохранения порядка; путать элемент множества и ключ словаря; считать, что update() создаёт дубликат ключа.

Решение 1. Повторить set

numbers = [5, 10, 15, 5, 20]
unique_numbers = sorted(set(numbers))
print(unique_numbers)

Сортировка нужна только для стабильного вывода.

Решение 2. Нехешируемый список

my_list = [1, 2, 3]

try:
    result = {my_list}
    print(result)
except TypeError as error:
    print(type(error).__name__, error)

list изменяемый, поэтому не может быть элементом set.

Решение 3. Безопасное удаление

my_set = {1, 2, 3}
my_set.discard(0)
print(my_set)

discard() не вызывает ошибку, если элемента нет.

Решение 4. Обновление словаря

my_dict = {"name": "Alice", "age": 30}
my_dict.update({"city": "New York", "age": 35})
print(my_dict)

Ключ age не дублируется, а обновляется.

Решение 5. pop()

my_dict = {"name": "Alice", "age": 30}
value = my_dict.pop("age")
print(value)
print(my_dict)

pop() возвращает удалённое значение.

Решение 6. Комбинированная задача

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 5, "a": 8}

for key in sorted(set(dict1) & set(dict2)):
    print(key, dict1[key], dict2[key])

Пересечение ключей превращает задачу в обход общего набора.