fromkeys(), get(), setdefault(), keys(), values() и items() повторяются как базовый набор методов словаря.
View objects отражают изменения словаря, а list(view) создаёт снимок.
Вложенные структуры требуют цепочки ключей и индексов.
copy() копирует только внешний словарь, deepcopy() копирует вложенные объекты.
Dict comprehension подходит для преобразования и фильтрации словаря.
Функции повторяются через def, pass, return, *args/**kwargs и LEGB.
Практическая задача со скобками решается стеком и словарём соответствий.
global работает, но параметры и return обычно дают более предсказуемый код.
Топ-3 ошибки: менять словарь во время итерации по items(); ожидать независимых списков от dict.fromkeys(keys, []); путать локальную переменную и global.
Задание 1. Правильность расстановки скобок
Проверьте, что каждая открывающая скобка имеет закрывающую и пары закрываются в правильном порядке.
string = "([)]"
# string = "({[]})"
Ожидаемый результат: False для ([)] и True для ({[]})
Задание 2. Проверка знака числа
Напишите функцию, которая возвращает, является ли число положительным, отрицательным или нулём.
num = -3
Ожидаемый результат: Число отрицательное
Задание 3. Методы словарей
Ответьте, что выведет код с dict.fromkeys(keys, shared_list), если изменить список через один ключ.