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.
RuntimeError при изменении словаря
Удаление ключей во время for key, value in data.items() меняет размер словаря.
Итерируйтесь по list(data) или создавайте новый словарь.
data = {"name": "Alice", "age": 30}
for key in list(data):
del data[key]
print(data)
Общая ссылка в fromkeys
Один список разделяется всеми ключами.
Используйте comprehension для независимых списков.
keys = ["a", "b"]
result = {key: [] for key in keys}
result["a"].append(1)
print(result)
Непонимание области видимости
Присваивание внутри функции создаёт локальную переменную.
Передавайте значения явно и возвращайте новый результат.